返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
% n5 P7 R' V6 Z" C) @, c. t' ?8 L8 f/ F6 R. f4 |+ P4 [0 ~, ]! g3 B
特拿来分享给大家。1 m1 l9 [( ?/ ^' V/ [, v4 s- D

1 l( ~5 m0 D( q/ z/ q0 Z7 m今天我们不提我们国产的那些杀软,真的垃圾的要死,
! u3 y! E# Z$ J0 P) T3 c, \8 z, w% ~9 \# Y9 b/ L! L
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表5 V. ~2 C; k2 p  V% g# D) r' g; @# L

% u0 w: X+ f7 C6 V1 j8 P我简单的重建了输入表就把瑞星搞定了,; ]* T- l; Y* H: j
' X! z3 d* V! {* Q
失去信心了。我曰
/ [' |! |3 u" v4 J6 F8 {- m
* p! d% s3 m  w! h9 ~8 t今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
4 T! c9 m8 }- ^/ L& m  t: ?9 p
4 a$ Q" s6 l( O0 I$ [首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
0 ~% c( {" N5 {# _0 X6 @( `
$ i1 _4 J& Y; ?) Q7 z外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
0 A3 r# D9 Z! |% b' j# q# u7 J
5 v# v/ A# B4 v% S9 n9 e7 t高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
  D2 i, e/ V- ~# E5 d& I5 a+ O  D# p) o3 l. t
过了以后再调到最高,再做免杀。
; n; T' a. R* f, u: f) T9 b/ t. n5 ~$ r+ n, M5 y
以上是废话,
0 a! f; w4 W9 V5 {- {! X' u$ B5 ]3 F; g3 U
好了,下面我们来说下常见的免杀输入表方法。
4 K0 d9 ~( j5 G/ Y1 ^0 s0 B
7 K$ G# n: W, n, V一。移位法
8 D& @0 _3 M) l4 ~2 D0 B+ v" P; |/ _$ N# P+ s" D2 s& w7 K
这个已经过时了,我们的国产杀软及时的跟上了时代,$ c1 m3 V) g" B4 L' Q% J1 O
# A( c  i$ _4 {9 y& @
移位法在去年过金山和瑞星,还有江民都是可以过的,/ S% q; F, O& U* A, k1 c

& M, |+ s1 q5 i现在的杀软智能化了,移位么?呵呵 ,追杀你。6 \0 H# ?, D( h% F

! \* t5 H3 f/ X- K! Y9 v如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。* ^- e2 G" b# D" m

2 l2 z* H- ^7 f5 ]" N  E: n$ d/ e二,重建输入表
; j$ E. g: S2 D3 }' A% X) ]" x, ^  N
) Q' A4 O3 t- j8 ?+ ?- N% x& W' ?效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
7 g0 f# q1 G, \* R# ]2 X
+ ]( h  h4 I9 M; G. C1 F5 }+ p这里我介绍下,
) t6 h0 }! N9 p3 s! U& l
* i/ L/ o: g$ p用到工具:5 x. `3 h* o. J9 a- v
importrec1.65 n4 V1 R; \8 L0 c
od: ^# e2 Z6 H- n" i8 @5 T
c32asm: D8 j3 Z9 W" v+ g* e( I$ p
loaderpe
6 E/ \. E% ]3 S5 \0 n这里我们简单的介绍下,如何重建输入表- a, t, J/ x: g* ~* g5 Q% f9 w

3 f" d9 j: S0 G% ]* t2 O. P首先吧文件拖入od,打开inportrec1.6
* X" z. l9 d2 x  C6 l, B, F. G+ n9 l4 M) O: z/ W
如图 选择拖入od的程序,: E; b' |- N" z
( B/ P+ Y& {1 B5 `9 M
4 m+ S3 Z9 U! N4 r8 |! H9 w
这个时候,我们打开loaderpe,
- \) R, z& n) \( o. w* x) b, M9 ^: |" Z+ Z- [* ~% i1 u0 z
拖入我们的木马+ h1 i/ C) a3 e; D9 f! P; y
/ _+ ^1 P7 W+ i+ _) j
选择目录,7 c! I, i( N+ A' d% b
. y: L% Q' d. M3 |  E) ?8 q8 S
我们看到导入表这里。。。  G5 Y3 Y" x, J% B( O

$ u2 z" i3 ^. i+ y2 }* M; A# v如图:- R& ?1 d- y) i# f2 E# y3 N

8 o& {: E6 {( m/ I
5 e! S  ?! Y+ D5 D7 B. h; R  qRVA地址是0001D000  大小是0000154C
/ y: }! D1 x5 A3 [! e
+ a+ z) w$ c4 b, {6 P好的,我们把这两个输入到import1.6里去
/ n- H: b9 m8 h+ ~! U" G( B" r+ D, \7 d, @
就是在“加载树文件”那上面一点 & S. f4 `3 e% J
( k# u8 r% y1 H
输入RVA的地址和大小。+ j! z8 t% u7 Z/ b! N- b( B' Y
  k4 }8 s1 O& J
点击“获得输入表”2 s3 l0 Y+ j' _4 V. |2 U

0 R; e/ R& M8 ]: w8 {2 A4 o然后点击“显示无效的”
+ F6 b; e2 C% y( A" K  J  ?  Q4 Z/ K1 f3 x, f# Y
接着importrec会自动列出
5 o) l0 j0 q5 U0 c; U  z0 J/ u9 W2 t: T( a" Q! P0 M: ~
我们把深蓝色的字体  右键   剪切无效的指针' y! m6 d" D8 Q5 Z0 h0 E8 d8 `

  _' n3 R# D  ?: C
8 ?& H  _7 L6 b5 `/ e4 y" l) Q% n最后,我们点“修理dump”4 U) b( G' N# w6 |/ j! a

$ ]6 _3 A! n: T; ~. j; l选中我们的木马就可以了  j6 m; @% T; E4 Y+ ]

) J, Q8 x( P  o! w& \1 _7 a2 |最后我们要用到c32asm2 f5 W! f' O0 i
7 [' d1 [! C! y# k
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。& p7 J6 L; v8 N% A
* x$ n( _( ~+ ^2 O
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
7 c' z1 s8 K+ O$ D
0 Z; O. r0 \! x/ j这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤," o. J+ @2 }2 S1 O5 ^9 w- o  g

0 S+ l  _! Z# t5 _我们把马子拖入od的以后,打开了importrec1.6
- T' G) D7 w$ p, w
2 V+ V- O6 o) j* i( g在选项那里,选择根据序数建造输入表和创建新的IAT
1 h* ]- b$ P0 j8 _5 |5 h# }9 ~! z. y5 v
如图6 v- T# ?/ k5 Q" C& K" z3 E' q9 S# M
& H  [4 s# j% V8 Z
0 l/ h5 X; _* `6 {* `) M
以后的步骤照上面的方法继续就可以了7 p, K3 T; w$ O% _8 ~: V& ?4 H1 h

& i, ?) a' k- Z, O. X" k不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
8 X- r/ m" `8 a7 w: H( {  w; A, S* M4 X9 I2 L/ f
因为kernel32.dll的大小不一样。
8 f3 k! U: g2 z+ G$ R' x) n: O% d* W- [1 `4 J+ b6 H9 Q
3.修改originalfirstthunk7 E: Z$ M7 i" |3 }# p6 o+ |
, }, Q, P* j' [# |
如图所示$ ~+ X' K. d, o' I, i$ J3 N( f, `

' [7 x4 X5 X6 g4 F2 f4 p! J
5 h# M8 ~6 [: b) i" \7 p0 g+ i9 ?& a0 E我们打开loaderpe,依次点  目录--导入表(后面那个横线)6 ~! M* \  [: F) X0 J
7 V% o: e& Q5 w2 F/ V
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
) V5 Q2 k1 C. a1 w  [4 y2 `5 @( M: K
我们右键--编辑--把函数后两个00修改为FF2 ~$ k4 Q: r; |3 }5 t3 m

6 P: [# P% z( @, w2 P这样可以过小红伞查杀。  虽然会出现错误提示: t8 |5 j/ E0 a( j/ m2 p

5 e( G! _% z  ]. s* u5 E; y' h: g但是不影响木马的功能,不影响上线。
4 f. z' J- p. z+ z- B: y3 ^' s
* x4 S* {/ o+ z' u; O3 d! |4.dll后面加20 90法过卡巴查杀3 @& p" e+ v0 v3 G! _' L' S0 k

" y1 a) a. d$ e需要的只是一个c32asm而已,非常简单但却非常有效
9 |5 \# u/ ?  [! h% I5 z5 p' p8 h6 u- {
如图9 b. `# v) ~0 R  Z2 `
8 M# v$ K. ^9 K
  B" K$ j6 v, D( M( c$ r: y, X2 Q

4 _4 d5 y" h, ^) Z我们可以看到,# U% j' a& a; m0 A7 j* R

' Q  M6 X- p( L2 t) h7 \在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 904 J1 M- Q) [/ {& @/ c

  ]& c% s  {8 P) X" A2 i这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection* K3 R$ w0 u# q: l0 ^9 R) f

* F& `3 X( ~6 P9 Z  L0 N$ {0 g我们只需要在他的所属dll后面加个20 90就可以了
- [, {4 U! X3 U  b' q3 J0 m  _) C* J0 \& K- u, f2 t
卡巴目前还不查杀此免杀方法
! R, |/ k7 n( ?. m, K7 G6 c2 x
, g, n0 H) A( K, D- j
唧唧歪歪这么多,打字有点累了2 K% H. _0 S. W$ F* t4 Z8 p2 B6 H
9 z5 {. k, D! _
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。; L2 g$ u3 Y; N- x7 w

3 M. N4 f" s' B( J; o[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表