返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,0 a3 {5 U" `$ d. e

% }, O9 I7 g1 v0 A* `) H# b3 ?特拿来分享给大家。
, @! u% z% n% z/ K
  r4 c* G3 K5 |4 P; }" ^今天我们不提我们国产的那些杀软,真的垃圾的要死,$ T' Y; I$ [: C9 t

7 U. a! B$ u: v+ ^5 B: @6 ?上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表5 x. M3 M2 J) Y  U! c3 D7 |9 Q+ m
. @" R% D9 [0 |- H9 {8 B
我简单的重建了输入表就把瑞星搞定了,
4 f* S5 ~, F( E6 v7 _& y7 y/ s/ @# A% v  v9 E
失去信心了。我曰7 g( [9 O9 w* f, j0 C; s8 J
& p6 u9 @: ?9 J) Q9 s" V( z
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。+ z; ^' N8 [( D( t5 |: A

5 b1 \. ]9 c% o! C1 L! |( c, I首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
8 U5 G" D% N8 K& @7 V7 e& F: u# c0 S" u
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
( F! _- Q' E  ^4 }5 f7 q0 k7 q
7 w9 d( U4 R* ]高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低; c. J" Q0 A4 r( ]6 v
$ _; i  @7 g( k1 z& s  i2 h$ M+ Q
过了以后再调到最高,再做免杀。
( m. M( P  p0 E! Y. o
. C. v. r) Q0 W3 `以上是废话,
1 W4 z) H& ]0 j& s, ]8 d8 h8 P
- Q( @% s' A( y2 V& Q% e好了,下面我们来说下常见的免杀输入表方法。
' N! ]1 p% ^4 k
& b5 Y' P% s2 G& j5 j一。移位法
! |; V- e0 ]0 U+ X) b3 j. o. I9 ]( ^
0 U* e1 Q/ ]4 |% d3 b) K; H! [这个已经过时了,我们的国产杀软及时的跟上了时代,
: e/ f- z# _, |. e) Q; x* z* B" _- g  `) q! H
移位法在去年过金山和瑞星,还有江民都是可以过的,, E( X- y! }* X6 T  i
) l' d, ^+ \$ ?8 o% X* G: }& K7 e  }
现在的杀软智能化了,移位么?呵呵 ,追杀你。; `% x( e' w! i* V; b% d. D) k

4 H% ]3 Y/ }1 G如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。3 h: N- N, k$ r* a% X9 ?3 e! F
% J* }7 d' @$ Z5 A
二,重建输入表
. h$ P" m' _4 ^5 m& ^, Q" B3 u2 o5 y0 l+ u) a1 v& {
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
7 n" ~0 M( Y( n2 M- _+ z5 U% n# J. R* b4 ~' S
这里我介绍下,7 J0 x" X( c2 a1 a
# F) s3 I5 E4 W/ j9 W& q4 y
用到工具:% t& d5 \+ j+ F- G( b% W+ u: Q
importrec1.6
+ L. b: V$ q/ X/ c. ?# G$ vod6 m* H3 R5 N: G8 R8 N
c32asm7 [# g7 z% `8 d8 u
loaderpe0 ?/ d( K1 l; e( ?. Z3 D# e9 x
这里我们简单的介绍下,如何重建输入表
1 B* C1 o' i$ k6 D% A+ }
6 o0 ]" e% ?+ c  o2 w首先吧文件拖入od,打开inportrec1.6
( y; p% r+ v9 F7 b" o! q; {7 M% o' e( j4 i7 }
如图 选择拖入od的程序,( f7 h0 }! s% R, ^1 i! T/ h1 R5 h
9 V% w" K" _0 Z& x" q
0 o* E0 T7 W, Q
这个时候,我们打开loaderpe,$ I$ p# r5 _# }6 c3 ?6 I. J
2 \! w, M6 r. U
拖入我们的木马* h4 c; R& S2 p6 R2 m
) d3 A( d* P, b% e5 E$ Y
选择目录,& \+ U% D- l7 d# o

5 O& L5 V$ {% y9 `- Z我们看到导入表这里。。。
0 w2 [, s( O: v8 V4 v  n
' P9 r/ S5 Q& l6 o- i* g4 Z如图:' x7 {2 E  u3 L
& C* l3 V# W" C) v: ^) k" I6 ~
  p8 E9 l/ Z* {, r
RVA地址是0001D000  大小是0000154C
; V: D0 v; G9 H4 g! R0 ~
# m+ D9 [1 q' p( S2 `好的,我们把这两个输入到import1.6里去; B, G! |% v  g: h# t4 R
$ v2 R  E8 o$ Y' h3 V
就是在“加载树文件”那上面一点
) k; k$ W1 K6 f/ b6 p, a* E" y- f$ P* v, X! N$ R3 ^
输入RVA的地址和大小。
! [1 O- K# g. q) I0 o. c: w. a, J/ n. H
点击“获得输入表”* Y8 {; O3 i7 E
5 a' d) L9 @1 f/ o1 \! Q
然后点击“显示无效的”
. E/ L' ^% v/ A- \! u7 l  [: ~8 x2 n8 U
接着importrec会自动列出. o! I, x# ^" U% {* o( H. J3 s. F
+ _0 c# n4 ~) b3 N! ^0 x
我们把深蓝色的字体  右键   剪切无效的指针9 N$ N3 _3 L' K2 r9 W! t
/ T" ~9 i; T" W

, u" p* [8 x5 M0 H最后,我们点“修理dump”
( T/ F4 \: W# j0 }" t# k
/ C" p; Y( ]6 \+ ?" |3 v5 T1 M选中我们的木马就可以了5 s0 g- k  d) R

% N6 e$ v" ^8 |; h$ S- ~最后我们要用到c32asm
- u& C+ j9 M' l) k3 ~) w+ f1 Z* L( ?- i: L5 W9 N
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
3 k, T. Q+ x" F3 _- q  H  r1 U$ |  t" y  j- T* Z6 |7 H" D/ i
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
% P' y* |! f; p! F4 h
% O& d( ~& m8 I" b" _  `8 g" G- s这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
- _# k  ]0 |* A4 |+ S& Y$ K" R- m9 |5 b0 t5 V/ o
我们把马子拖入od的以后,打开了importrec1.6
9 O+ z0 c2 K7 h  s1 E  y
: @- c; u4 c" O6 t在选项那里,选择根据序数建造输入表和创建新的IAT; u2 \9 u3 W' O  W. @4 l" @

* D* R9 `& i0 l" |( k5 D' b3 S) F. _如图6 v& j7 o/ i8 z6 r  E( _
8 x! T; w: H: a( \
/ P2 K* t# B- X
以后的步骤照上面的方法继续就可以了
3 b! K1 p  E9 w1 |, T8 x' W' b5 u5 m
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了% \7 ~" e0 u1 e( R
' m& U7 _7 g4 f( b/ r
因为kernel32.dll的大小不一样。
, X9 F, G2 t; v4 X
' t6 g( L: Y8 d% r$ _% p3.修改originalfirstthunk
8 U$ _4 Z! c* w# O' s. f& I* j, e# u2 M  S* }2 P
如图所示2 t9 X" P' X0 X- U8 T

) `' P! K1 y! L8 L7 T+ d/ z" s' L2 `$ ^) d7 l
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
* |3 A: ?. c" r* [: W
+ }! X$ O3 s, Q* e% w. V- q我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll! ^3 U. F# h' o) n
' V3 L" K9 D: E9 ^/ T- H- c
我们右键--编辑--把函数后两个00修改为FF4 Z7 A0 F0 {2 \. d( v
. t; @+ i. U* e
这样可以过小红伞查杀。  虽然会出现错误提示7 a+ p/ R8 L' X) T5 ~

- d) Q# I6 N1 D但是不影响木马的功能,不影响上线。. |: O" |0 U5 y$ W- m& w4 i+ d
) I- m) s% j( F, X# Y
4.dll后面加20 90法过卡巴查杀
) W8 Q! A; h5 U0 }$ \2 ^
6 z' d/ P  }7 l9 |/ T+ g需要的只是一个c32asm而已,非常简单但却非常有效
4 R( G" n( d7 F2 ?( M! e+ U8 W4 \$ z3 {5 r; S( X
如图
1 K3 h7 o8 L! ]/ u; Q9 V& R7 _4 B& t" x( _
8 O$ M) S4 _2 N/ b) }( E

; A( y" H; _3 t; g  \2 V' o, ~/ [, u我们可以看到,
6 t! {. m# i) G# h
' V, S( o" {% p# h8 `2 Y2 l在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
- S5 W, r) b! A1 H- N8 b7 p9 Q
" R" w* `2 c6 N! E; z" f' E这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection/ d0 u8 @5 r+ z4 R4 ^1 Y# N7 ^
% a2 e; T' x# g, f/ T
我们只需要在他的所属dll后面加个20 90就可以了
3 y( M8 U* G: q# J8 G/ s+ r  W0 \% w4 r5 q/ S* ]
卡巴目前还不查杀此免杀方法
$ v, _+ y' J$ b6 o+ K! Y! S+ @1 z4 H6 d

) _1 }# ^. A( F; i1 O1 m2 M唧唧歪歪这么多,打字有点累了- X: \* f' ~5 m- {( N

" H" b& y' r1 g以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
$ \  `( f4 I/ M! p9 w& M( y2 j6 a% D8 w* S6 l$ B9 P+ D
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表