返回列表 发帖

[原创文章] 木马免杀之免杀输入表篇

最近和一位木马免杀牛人交流,感觉新增进不少,
# b7 _! A3 N  M7 ^; P  A$ R# r; x6 B6 U& ^) W9 e7 s
特拿来分享给大家。
% s  W/ U+ A$ e1 T1 X6 i7 j$ [2 V+ w
今天我们不提我们国产的那些杀软,真的垃圾的要死,9 P( C6 P) Y3 w' [" N

& J' E7 e8 U" b; a上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
& h/ ^$ S- n8 f1 B- j' C9 q; M3 l7 N6 e" e5 R
我简单的重建了输入表就把瑞星搞定了,
( T) Y8 T. R, X0 K2 `4 @* h" q- N1 m# n- C, v- G- n
失去信心了。我曰* \- g  S9 g1 u+ E
0 S9 g* ?. m/ ]2 ^+ V: z
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。& z9 H# a9 ^7 J
9 Q  g, \! J, q8 G2 L" N
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。4 Y7 m& c! E/ @2 b' n! J
& l& F8 q- R6 q
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。8 i) n8 I  r7 d* E, O8 g
8 S$ z% U5 O) }* b4 Z) W5 f6 B
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低# V) y) A0 c5 c3 x. h
0 Y# S& _, y& |# O9 t/ |" O( o' G
过了以后再调到最高,再做免杀。
  A5 A- ?( t4 y# |& J
, L. w, Q" L5 E以上是废话,
* [: v/ M+ ^9 O0 c6 ?9 B
5 {( K# V3 }' X+ W8 r* I) X; u' W好了,下面我们来说下常见的免杀输入表方法。) J; T9 s' @% S/ G
6 L  q1 G, S  e$ U, ~
一。移位法
0 v) j8 z2 U: {; F5 D5 S. ]" S, A0 P- k$ ^5 Z; T, R) K
这个已经过时了,我们的国产杀软及时的跟上了时代,/ I- `7 O1 U' B6 O

" ]  U/ l9 ]9 s移位法在去年过金山和瑞星,还有江民都是可以过的,# e( `- h( Y2 R0 v& I
* \( M# l% w& x; ?
现在的杀软智能化了,移位么?呵呵 ,追杀你。
7 C$ V8 Y+ k$ }0 H2 k5 S2 t2 Q" X) G7 N% R! t9 Z
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。( B6 T' D6 M) ]' k: J9 q- O
$ h& a( [- ^8 W  s- i
二,重建输入表
$ M( V( b5 O& _/ [8 }' {- K
9 U+ [5 W$ S. q效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈  y. @& X  t3 r$ W2 a  S

/ F/ @1 h$ C4 Y0 a这里我介绍下," n1 r* v2 Y8 T; U5 d( O

0 n2 d- ]' _& p5 m$ O' s: ~& X用到工具:2 G. E- L- b' i% S: a
importrec1.6
& n1 _/ o2 g$ d$ u  F4 Eod
1 O6 F# K/ p1 H9 q- q1 ?6 ic32asm
( f  N9 i1 m% lloaderpe9 F4 o5 y4 _2 M8 M' M: g8 f
这里我们简单的介绍下,如何重建输入表
& g! L7 A9 c4 o; G- ?: u- l, _9 Y! R" M3 F
首先吧文件拖入od,打开inportrec1.6
/ N6 ]3 M0 f0 i8 G
8 m- u1 h9 x& G% a6 C; c如图 选择拖入od的程序,
( P7 w1 j- C1 r/ H( _
" n* T1 l) d6 `; L- l
9 ^2 P' e% a7 u1 J  @! t这个时候,我们打开loaderpe,  e5 `& f3 P3 p  I1 h" z8 D

4 d/ t' \0 D7 \; s" @' R- R拖入我们的木马
/ @9 b+ @2 p; |8 r2 V
- C9 ?0 l$ o/ C2 O- ?  F. X$ x选择目录,
$ R, N. g) o# D* F% ~
  p; S2 I2 Z* G$ z8 c我们看到导入表这里。。。
3 j! r3 s$ N* l6 n( [& W
0 s1 P7 {% u* ]  i如图:, ~: q6 {( |5 q0 N
+ p4 c( n4 w( L9 I' L( G9 ~$ `
3 {2 A9 |+ [$ @% w/ O+ g& t
RVA地址是0001D000  大小是0000154C
5 {& W: X/ |$ s7 u0 V% E
: A# B* K& l( N# O- `! b5 |$ G好的,我们把这两个输入到import1.6里去8 G. C. {- p8 h' Q/ B8 t0 i' G# Z. d1 R

" h5 Y, a6 e; W就是在“加载树文件”那上面一点 ' H* _  O/ K0 F3 t% o

' M) ^2 m0 \% b8 {输入RVA的地址和大小。
5 X4 z1 U' I7 n) B1 d+ Z- |6 t* I4 [5 y
点击“获得输入表”) E+ @2 [  T* Q4 y. L. X
- q- m3 x' z: E; ~0 ]0 ~: e# x
然后点击“显示无效的”1 o0 _2 e) s/ w3 \5 O
  J! y# V7 I3 c( Z5 Q! o+ }1 w
接着importrec会自动列出( |8 C' ?2 ?) H5 B: M
$ j/ j, a1 N1 P) h) p9 u
我们把深蓝色的字体  右键   剪切无效的指针" L' Q7 A7 F# e
! }' ?) L/ M3 a

) M$ ?" y& F/ T, U最后,我们点“修理dump”
- t% f* q. _" ?. P0 ?
" Q" t+ |! T7 i1 w选中我们的木马就可以了" q( Q- l0 g7 p: e- w! }

% s$ J8 E( a, q4 V" f; y$ a: j最后我们要用到c32asm+ S( M. `1 P9 f
' j6 h7 _% I+ z7 D2 h1 N% P
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。4 s7 o  X7 R. P) o* U9 y5 Z+ H

: @- \: U* A$ Q+ [这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)8 h5 p) m4 Y' {' e2 Z

" |& G& g' w3 u5 V" \这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
& c6 B+ T* j9 Y, r# A1 C0 z4 `% s* R( z9 T
我们把马子拖入od的以后,打开了importrec1.67 u5 s& w2 b3 U9 j: w  e
& q, c' v) _: K* @" X7 C+ n
在选项那里,选择根据序数建造输入表和创建新的IAT
9 J! a$ Z/ k$ t9 S
6 f8 L. n& N3 S" u如图
" y3 h% U/ I" ^0 G1 [
' R/ z8 L! H; r1 G# ~1 h- X
! r6 g1 g' [0 H; X# I9 k. Q以后的步骤照上面的方法继续就可以了
. P5 {1 Q- m: O" Y9 `
" j* b& ^# {& N2 N8 E8 a# l" Z不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
; C; b: `7 f3 B  F- c0 Y
8 K( Y# n0 ?( L+ `8 j: l3 H因为kernel32.dll的大小不一样。1 Z+ x. A6 |2 B6 k

8 z$ v+ }* D# T* P+ M3 g' [$ |9 b* R3.修改originalfirstthunk
" F! q8 c: q1 p) J, P" I1 S1 S1 W) O% K% Q* D$ @6 s
如图所示* }# L5 g3 H, m$ z2 j

+ I( t% M' W( U. N8 N
! \- k- F6 V$ Z# p, l我们打开loaderpe,依次点  目录--导入表(后面那个横线)
% N# Q3 ?* I% n$ m* v& o# d8 z2 O3 d4 v! }% @
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll& {8 E( l% m4 Y8 C; x7 n( j7 p

# ]. }0 d4 m- v3 P* q我们右键--编辑--把函数后两个00修改为FF
4 L1 ]6 D& K* z' W# w, b7 i
+ v4 C3 a3 m8 Z4 Y5 D这样可以过小红伞查杀。  虽然会出现错误提示
3 f( C) k2 S6 R3 E) n3 u3 i& L8 K* \, X9 k' Z* b8 R
但是不影响木马的功能,不影响上线。
, T( @( W7 ~" v+ c, [) c# ]  l& V- `
4.dll后面加20 90法过卡巴查杀
! Y. ?* }* x0 M/ {2 b; C8 N$ a4 a3 g$ }
需要的只是一个c32asm而已,非常简单但却非常有效. X* @6 r/ @' {
5 R$ H( Z# ^9 x4 Y
如图
3 b$ g4 D; u* d1 _# r% C9 S
7 s( e0 g4 L4 n; s0 f& }# _+ X$ Q# w9 p& E  u8 I3 i% B
) M- \3 Y) v5 [8 i
我们可以看到,
( m$ v1 P3 O' e  H6 v
  N* l! @$ V2 L! h在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
7 z* a6 w7 R3 I  \2 g( k& O4 h4 ~9 Z; h  A. N
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection  c% C9 j9 T/ M5 L7 ^' Z0 X

0 R! N, `2 S% h' k我们只需要在他的所属dll后面加个20 90就可以了9 c2 l) J/ `) G1 ?

8 t! a& Y. ?. @% m, y4 o卡巴目前还不查杀此免杀方法6 T0 s& u! o9 C/ @' c

. X$ f; x2 P& @# |1 Y& J3 c# _
* o6 r! i0 t9 ^: L! P; |唧唧歪歪这么多,打字有点累了
4 @0 f& U5 t/ e2 m
( {. U! P3 f! X以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
0 p, N* `1 n9 t1 V' {& m6 X
5 Z2 v* C/ o' N0 r5 p; d" `/ T[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表