返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
( F1 c! J2 P+ o9 X- o% {; ~3 a% }6 \9 a
特拿来分享给大家。3 U9 s1 M; c7 l9 T# ~4 C

( j  N9 i9 M. u4 w! T今天我们不提我们国产的那些杀软,真的垃圾的要死,8 Y! e. o& l, f* O) R1 D, b
4 i& R& Z- b6 V/ z; {: L  Y$ H
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表3 F4 W2 }$ p5 P3 N# a, G- R
/ F! p. k6 f! x
我简单的重建了输入表就把瑞星搞定了,
4 x* C5 z# n' n5 P; ?% K6 P. N9 o& q9 T
失去信心了。我曰
5 N" h+ V& y% j6 f% W  [
$ H' e" S' W7 N0 d8 O3 A7 F8 t今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。7 n0 W, I! A% Y5 c  z1 H

* c$ C& |9 w3 l首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
+ e, K  o2 n' D; I% y. d, ?
+ n" z" f; E) G& {; p/ m外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
& h1 P5 J( j. C4 S( V7 o# x6 t$ O% c1 P8 A' Z' H" @
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
" I2 l; M! x# g5 O' S" m7 G( K8 j2 `; X6 k3 q1 J/ c7 |; ?: Z" |
过了以后再调到最高,再做免杀。
% Z( S% s+ Q) l/ o: i; P: N$ Q
3 c* v  U& E; ~0 e以上是废话,. W5 u7 r, x: m/ C% O1 M

1 i: ^- ?2 o6 M/ q! a/ }& ?& ]. J/ L$ s好了,下面我们来说下常见的免杀输入表方法。( A- l& G' L7 G2 i' i5 b+ x2 h* n8 D: X

# G6 E& x5 ]1 ?; N0 y& o一。移位法
6 m, {9 g: H- i8 H! G6 H4 X: _" Z; Q/ |+ r
这个已经过时了,我们的国产杀软及时的跟上了时代,
% T6 G) h3 D2 @( Z, z# \2 ?) v# Y2 x$ D) e# D
移位法在去年过金山和瑞星,还有江民都是可以过的,
5 m7 f1 r# F9 r# u3 s& }. B, w; O" L( u9 I0 B9 s
现在的杀软智能化了,移位么?呵呵 ,追杀你。# B, h- e* z- `' t

0 h* G4 Z  K" g9 z% p2 s如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。1 T! e4 U4 K; V7 Q3 ^$ h0 p5 x# K& T

) h* @! p1 W6 k! K0 O: _二,重建输入表. t: Q8 p" t0 O( f: k4 t- L
; p8 h! `7 t! B; {  _4 i) a5 d
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈) U8 Q$ N' g% _$ B5 h* j: q8 W3 T
" Z2 u0 F( \% A. d9 ?/ d1 _" C
这里我介绍下,: o) A; |1 `8 d3 G! X

0 Z' g) R- W( y; P5 ~9 A6 i用到工具:; ~+ x$ B$ l3 s5 v
importrec1.6
& B. V0 u% |9 d; b" \od* L. b* Y1 Z7 d8 T7 m6 ~1 e
c32asm4 @. t. i/ n! q: [
loaderpe
1 b1 y4 A  W9 @; c1 y0 @' v, ]( ?这里我们简单的介绍下,如何重建输入表! `4 r# z2 g6 T' i& E
+ N( c: S& T5 n, r6 F! p
首先吧文件拖入od,打开inportrec1.6
; Q; o/ L1 R0 R) B; M3 U7 j+ G9 f& k' o  O) H# Y
如图 选择拖入od的程序,: O* t( l* {, o3 e* R

, ~) Z2 ]9 k9 J, P9 l, A1 O, K0 H4 P. `( s
这个时候,我们打开loaderpe,
2 T+ N& q% C* ]8 g" `4 O! z) w
+ }3 f" S% k+ z5 O. D1 q1 M拖入我们的木马' F. B6 m7 l, X- x

( G- P# {- G- A4 B2 W选择目录,
2 Z' y# H3 M; G: Q8 f  B1 M3 n( Y- G% V% p3 t  h8 ]! x
我们看到导入表这里。。。
7 d+ E1 i  R, [8 z# Z) x6 u1 w  r' e. [% [/ W
如图:  B: K  [) t. C' y3 ~. r$ Q% w0 ^

+ z2 |" ^! b* {' a7 f6 m9 J% ?2 P4 y" W$ q: {- |- W. `
RVA地址是0001D000  大小是0000154C
$ A- [. I  Y  `! b/ g! ]. U) T+ t2 L) ?
好的,我们把这两个输入到import1.6里去2 z4 R& t1 P1 h  _1 ?3 F8 _  }
- L# D7 [2 `  \4 g0 A# d
就是在“加载树文件”那上面一点
  j" |) F) a, ]- g% L
( X5 W  G* V5 `' P; {+ ^输入RVA的地址和大小。" r5 b8 n) q. @3 Q' d
& e9 y, P1 z: t
点击“获得输入表”' ?6 p4 q( J6 Y, _
4 }4 N4 E$ J# l7 A3 T
然后点击“显示无效的”. f5 e* X  G# ?

- `3 Z5 N) J" G7 y0 ]: Z  g; j. B8 t接着importrec会自动列出7 }9 ~8 B9 @% Q4 W( A: ]8 e
3 I$ C6 W' t+ X& r4 e8 ]( J
我们把深蓝色的字体  右键   剪切无效的指针% l: ^% ^& E( B# L7 S

/ j+ U8 `0 H' c# p
$ E  ]+ V* I" ?: a' H! l5 \最后,我们点“修理dump”% A1 o0 l* _8 j

% Q5 X0 \# m" O6 _$ D! x$ ~3 m, V选中我们的木马就可以了
, K3 U& e3 R/ ~- |3 c
* ?. y" d- q8 v最后我们要用到c32asm% ]) x1 ^1 D# }7 r

2 Z% r" s3 M2 }4 R( k2 P我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
5 t7 a  J- Y9 ^. A2 X9 R- j# Y# D" B8 i4 d
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话); q2 k7 ~6 g3 e; W9 I

5 a3 V6 `: r8 t3 O4 i& X这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
+ g6 L; T4 N, G
) ]; m2 }5 P' p4 {# S我们把马子拖入od的以后,打开了importrec1.6- u, r# t/ ^, Y: i4 J7 m4 M5 R+ e# D

' }+ R) [5 w, @/ z- D, i在选项那里,选择根据序数建造输入表和创建新的IAT/ N6 x8 \1 G# F; W: Z
) |- n8 ?5 J: p$ e' A. u$ N- N+ a
如图1 z% M% |$ S5 r
1 o: _9 |% X0 R5 f9 f7 C, Z

5 |/ S& }' j7 _; r( {以后的步骤照上面的方法继续就可以了
: K2 p! _) A& `- r* B4 P9 I- K$ O# m; x  r0 h" a
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
& F* P/ A% i' b8 Z) {# D6 i( [. j' U- o0 I# p2 _9 d$ C
因为kernel32.dll的大小不一样。5 R; p' Q+ @5 O

: a' l& v9 u5 i+ O8 H3.修改originalfirstthunk. V5 z4 ~0 j0 W% U/ E5 N( Y0 d
5 c/ e7 l( \) I1 O
如图所示  `' O2 e% T5 F" u9 i9 K- b+ l
) ~* `6 g1 E8 T. M

/ h. d. P) n4 |我们打开loaderpe,依次点  目录--导入表(后面那个横线)
. c' r) k' {) |# n" k! ^0 W
& A7 I  ~( M! P9 }  i我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
7 E* Q5 N! s$ t; j7 N0 @: R+ U$ W$ X- @7 `7 {8 j! t* H
我们右键--编辑--把函数后两个00修改为FF
/ _# j8 A0 A0 l+ ]* ]- W7 q4 C+ _+ y8 I
这样可以过小红伞查杀。  虽然会出现错误提示
1 h7 O" N) b) N2 s/ Y
' O9 h( `4 j  ~/ f/ X但是不影响木马的功能,不影响上线。
' A  o0 f0 z1 l) w7 Q9 @9 X1 H1 b
4.dll后面加20 90法过卡巴查杀2 e3 i; A6 a  @& @$ X/ D7 d
/ W1 M5 ~0 _* O  j8 |
需要的只是一个c32asm而已,非常简单但却非常有效; n* Z% o( g( V  O' u
, [/ C* Q* P1 C) h% K) j. {9 h
如图# }6 w5 V/ ?- f& |5 c6 ]: x
; \6 f, f# j) O. g  l% o2 v$ b3 o

# I! ?2 L& n2 e+ a
1 @, i; e- D& D% {* }我们可以看到,
) f& ^6 h' g+ S
& ~: l% v! H" h1 v3 a9 T" B在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90: V. c1 i* U& z! g" f6 k# B( z
. A+ H6 X5 ]! h. M& H& `- c
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection# j9 \' @, P% l5 X) ~0 }) j

1 X4 B7 i3 I( e我们只需要在他的所属dll后面加个20 90就可以了
) s: {2 @. `5 Y" E/ c3 I
  o( x6 W1 \+ P) R卡巴目前还不查杀此免杀方法
: N4 e4 Z  l, o; Y5 c
" g' L. I# u- h: R) _6 \& ~+ r( y3 ~) [1 E7 w6 A& z7 x' q, V
唧唧歪歪这么多,打字有点累了0 ]  M) M! D7 q+ I& N4 _$ c6 y1 `1 O: E

" k9 g4 k# k4 C1 f3 `/ W' e以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
. I8 ~# J. X+ Q' n0 T9 f
/ e3 C1 t2 P8 j8 L' O[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表