Board logo

标题: [原创文章] 木马免杀之免杀输入表篇 [打印本页]

作者: 1335csy    时间: 2009-3-31 11:30     标题: 木马免杀之免杀输入表篇

最近和一位木马免杀牛人交流,感觉新增进不少,' i2 {7 @) E2 T/ W( y0 V* f0 F
* R' s& R! n: L* M; k
特拿来分享给大家。3 J5 p) @& R/ b5 G' p, u" e
( I9 w/ u$ i& A" N5 l6 s
今天我们不提我们国产的那些杀软,真的垃圾的要死,  g" ^3 R/ I2 C% i6 D

1 |+ P7 h0 v  G6 w( g% x上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
; X0 O" e% _, ]' Z) A; [2 A
! N' i. P+ g! n& d1 e$ t' }6 c我简单的重建了输入表就把瑞星搞定了,5 k; d: D; b. X; \0 w3 \& B: z
5 S6 ~) A2 i7 o2 T* A, X, d% C. v
失去信心了。我曰
" Y9 |* o4 M: R% l6 D' Q
! P) w( a0 r2 A% G" n# y今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
3 R/ B; R( S2 A9 @9 o2 o8 Y" Q% C- Z
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
/ u% h8 {0 q3 Q  N1 l$ A" m& ?& g4 [0 ^! S
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
( G# N5 h' F! a2 R, F! c8 d, R6 v
7 F" S- `1 w* W% o0 b/ X; @高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
4 I7 X$ V) w5 [4 t  a6 ]
* G8 N5 C# i$ m! j/ a过了以后再调到最高,再做免杀。) ^3 j! E8 N5 @+ K

4 O! X4 V2 L( c4 l1 l以上是废话,
2 L  H" h& X2 p& l; `% [% S' s7 c0 l% s6 g3 c, L7 m  b  H0 e( n
好了,下面我们来说下常见的免杀输入表方法。# q1 x) [6 q9 X8 X0 _; Z

( T+ v* ]$ x% V" y  C7 q一。移位法8 }+ X8 B* ?( i5 ]0 b

1 a1 T. I8 w! M' f/ `+ {这个已经过时了,我们的国产杀软及时的跟上了时代,2 f3 d: A" T" J" R  v% E) ?7 C
, T. n1 J$ l$ L3 |
移位法在去年过金山和瑞星,还有江民都是可以过的,
; |+ z, Y1 I1 w2 S2 m; D( M/ t) `  _% ^* W3 D, ^
现在的杀软智能化了,移位么?呵呵 ,追杀你。
) G5 A0 X$ _! }4 S# ?# U, M4 Z+ P0 V5 A! t+ A: m7 y7 t$ }
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。- i& P5 x2 [- j0 c

& B/ B; s6 q5 E, Q, h) K' }二,重建输入表
. G4 o2 V2 F3 \8 d& `0 _3 U; K. m2 x( X& w; u5 P0 H
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
7 S1 M8 X# b% [
* c- E( y2 X3 @' f- \  k! e这里我介绍下,$ @5 r  @. `! J2 |0 w
. D+ V  h# [& q; x9 P
用到工具:
: Q% M6 x/ l0 p8 }7 \importrec1.60 M6 k' x( M& _4 }) _
od
$ S( u8 n7 M8 D& cc32asm* O# H$ ]) b, K+ a# D( r
loaderpe& o, P" [+ y# ]0 u$ L$ _0 K- k& u8 a* o
这里我们简单的介绍下,如何重建输入表0 A' c2 j2 n& J. ]
5 C' x- D% v2 H% }3 D
首先吧文件拖入od,打开inportrec1.6
* ?2 M. Y6 V: h' B; K. K- n/ ?/ T6 ^2 d8 A2 M; e( B9 B
如图 选择拖入od的程序,/ C' b, g0 @% t: w+ Y
) R) n3 y8 e- {2 t8 h

7 U3 o! \- d0 n1 t5 v- \这个时候,我们打开loaderpe,! ?! \0 L: r1 A' A3 t+ t
! Y7 ]. U2 g5 j7 |  }3 ^% H
拖入我们的木马
3 ?6 a; S. T0 \2 b6 P$ q7 U  G
+ P& s" u6 [+ c1 g) p3 u选择目录,
1 e/ c) g4 z' G9 W( J; {9 V: E/ e# S3 C1 V1 Y" x
我们看到导入表这里。。。& k: X: o$ R! ]; D% _( H9 q
  V) I0 B( |9 {5 F3 N" k
如图:
+ ]4 f, w0 ]3 m; ~' Z% O
5 x( B; Q: @" {. X& }3 |
5 M& f* D7 H& ?, O& ^3 [* n% VRVA地址是0001D000  大小是0000154C
# I4 C0 m3 ^) Y$ S3 b! C! H' W* [; [- n( \% \
好的,我们把这两个输入到import1.6里去
  e% V2 l0 K( `1 Y+ O; j7 @4 N6 \$ A1 a8 i& n8 |6 j9 i  ?
就是在“加载树文件”那上面一点 8 R6 f. \! |& }

  c: S+ K' M* s6 w+ \" m输入RVA的地址和大小。' X$ Y0 U4 x8 r* e% ~% {' T
3 i# x5 X+ E$ ?& {% ]$ W
点击“获得输入表”' ~' P2 C1 d9 i, M" v
' ^3 ]: m! o! Y. ?6 }! {
然后点击“显示无效的”
  v2 b/ H/ U4 W! K# a3 @- u- w; a/ X: e" N1 Q+ ?6 o2 A
接着importrec会自动列出. Z2 E8 w* [0 ^6 m2 l, B) q1 r7 Q! Z
1 b1 @9 @1 R# `
我们把深蓝色的字体  右键   剪切无效的指针% W8 T* P* I( q3 }8 d& s- y, y- G

. }+ k' [" `+ M" _2 \, D
( [( ?! i8 g' ?/ }2 g3 y最后,我们点“修理dump”
; t. D' t8 l( b, A1 I8 h$ f( v; _1 M4 D$ z7 n0 `
选中我们的木马就可以了# B8 f1 P: Y  z/ n

! f" a& s  N& G3 B3 U最后我们要用到c32asm/ m/ H9 K- k7 F1 V( o

- @8 ~% Y% M/ U+ f* [我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。( M4 V- t/ ]; `6 R7 Y1 |
! b$ b3 I. t2 ]" c, Y' z; c3 H
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
) c  Q3 t: s; O
& K4 f2 ]6 j$ J7 `! @这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,, p; l5 y; b# B* K4 h- c
' n7 M. x$ E6 G2 y
我们把马子拖入od的以后,打开了importrec1.6; j1 g' }1 P  q& d
# y, b/ H) M* {
在选项那里,选择根据序数建造输入表和创建新的IAT
0 N( p/ f1 I' R0 r, u8 ~5 A# }5 B3 J  P& V& S: O/ |; \
如图: b( @, U4 x3 o1 ]0 S

; O. ]% [& o6 C* a1 S3 E6 U1 n! |& B! u$ x7 ?2 {
以后的步骤照上面的方法继续就可以了
1 A9 z4 _: z5 ^1 _9 O0 F) \: q5 R5 m3 Y7 e, d8 Z* L1 D
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了, `/ }4 h: q; g4 T. V

9 j* H& N) V0 w  V% I% p9 e, k因为kernel32.dll的大小不一样。( A3 R: ~. r. e6 k+ ]
0 ?7 f2 Z7 x; \7 ~! V. G9 j
3.修改originalfirstthunk
$ j* q6 S; n0 \+ c+ U
1 ?& S6 U- u; i. f, m/ H' U( k如图所示
# }/ n# q. G* ~% e
/ O8 d3 R* U+ a/ U  L
0 e& Y' e7 z. ]( ~3 j& A1 ~我们打开loaderpe,依次点  目录--导入表(后面那个横线)# i' d9 G/ K- X7 R5 M

; s) e" L( C# q0 D我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll% t9 [4 n* D6 l

$ \- B8 c6 j0 S& ?我们右键--编辑--把函数后两个00修改为FF  i! f& q2 x/ t& J

/ k: U7 n3 L' Z' E( l这样可以过小红伞查杀。  虽然会出现错误提示0 G" @% O# x4 T( P: x% w* s5 |  \

- h; a. g" P7 a* R6 F$ p+ m- s但是不影响木马的功能,不影响上线。
. ^4 m, X( `% F( [+ l! q1 h8 r3 Z1 Z. v& I3 p/ m* D: _. i* o5 S! K
4.dll后面加20 90法过卡巴查杀
& |+ `% u& f9 Z
2 R8 d4 ]) \( R需要的只是一个c32asm而已,非常简单但却非常有效
  [4 f" P1 @6 w" H+ `( P# Q1 w+ Y# X: Z! S; P+ R& j! U) ~
如图- l2 {/ Q+ e! t. y
) k# z! q* g+ B7 u' e9 q& h1 U

* i* i" N5 n4 c
! ~8 l8 j. e. p4 W) m我们可以看到,
0 y2 U2 E/ \9 i  x- J" `5 B: N
' A2 L& y* i- V9 B* ?4 r在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 906 {. ]  O, Q4 n; S* Q

4 M' u% C" T4 R& @0 \; R) n这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
  c. _- s: W0 B+ G6 Y% W) }7 Q3 n+ A% F- |
我们只需要在他的所属dll后面加个20 90就可以了$ J, J( E3 Z1 L; ~2 i1 z

6 e0 Q* o+ [' U& u卡巴目前还不查杀此免杀方法: K2 T7 `) Z4 e
/ _! Q! j3 F& |8 ]: N
  Y5 }. y7 t2 ?* M, Q
唧唧歪歪这么多,打字有点累了9 _( l5 X6 t8 ^6 i5 D
2 `$ W9 C5 k  T2 F$ A$ F4 s+ p) E8 R
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
8 n% Y+ T. u" b, D' k* U. K0 G$ {4 |! P5 }
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]




欢迎光临 【3.A.S.T】网络安全爱好者 (http://www.3ast.com/) Powered by Discuz! 7.2