返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,9 l3 h) A5 T: t1 S5 _7 V
' w/ b% V, K  ~  ^7 s
特拿来分享给大家。6 \, N' o+ s! f, ?* V
( n+ L2 P8 M( M& U+ b7 }
今天我们不提我们国产的那些杀软,真的垃圾的要死,
" o) T; n0 x) I! b- }; ]4 G2 \) q9 n$ ~( s
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表( ^5 V& g, @  ]1 H! T1 g
  I9 T9 k) q6 w6 U% |
我简单的重建了输入表就把瑞星搞定了,
( L/ u) b/ N6 v/ j& q( h5 s! L
* d* S9 _. {6 n+ j1 k1 i9 p失去信心了。我曰
. K4 F2 t) X( v: e" @0 {" [7 V' @4 g* `( a
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。+ m; U0 S' w  [5 N5 o

* ]5 ^0 y2 R4 H7 Y* W; B( w/ i6 D首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。" r; H* x3 u- f7 a4 A7 Q9 R$ J

0 s( x. u6 ~9 P9 u5 a1 R; X外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
  \2 a8 i" W3 g* H' l
# `( r! z7 U# m8 ^高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低. x, D! c& E4 Q5 X* S+ G
4 r: M" P8 U5 F* V1 o1 Y$ D
过了以后再调到最高,再做免杀。9 Q7 ?; ]0 o! \3 n/ h3 h# R

/ \6 J# Z1 `* o4 J以上是废话," _/ C0 w9 ^' _# r$ C& t
+ P5 V5 c. d% T- U# R2 v$ Q" n1 l, `
好了,下面我们来说下常见的免杀输入表方法。, d. a3 F( T5 m7 `" |; w8 o

! ^' W8 I* |/ S* ^4 I$ S一。移位法
0 b5 W3 J/ Y$ O6 E% i. p
! p0 J3 V) s* t# ~8 M, v9 r: x: v这个已经过时了,我们的国产杀软及时的跟上了时代,
7 n. W  l' }$ `' h/ B* i# Z( I  s$ }0 D) g7 K
移位法在去年过金山和瑞星,还有江民都是可以过的,
8 Y% Y6 t6 C* D. R9 l0 U
% X9 D+ Q4 k* H* ^现在的杀软智能化了,移位么?呵呵 ,追杀你。- _0 o' z+ d/ v9 G$ G+ p
3 x2 O1 l1 m1 v$ G: N; V
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
$ {. p2 ~1 T8 Z% Z8 }0 j' M
. n. c8 U: V& k  m5 k& h5 `" H% T- U二,重建输入表- M* g" y. L) d" X) ?$ a

6 G' W( w% G" }; F' y* s7 b9 v效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
) Z4 y0 i, e5 ~2 N& F8 T
: b; K8 v% u6 ]0 {/ ]- \3 n- Q6 k这里我介绍下,5 D1 r  W& t4 _

1 C; ^/ c7 f; T: j# O( h; A& P用到工具:
5 B) J- O! l( t( y6 ?0 \4 Z* uimportrec1.6
: N$ G7 o, g2 y8 p9 Rod7 I/ t' v) ^8 s8 q4 Z; R7 R
c32asm
8 a) k; p) x' Q; K7 o& l( zloaderpe* h: a2 q7 K3 i) M& {( L6 r9 X
这里我们简单的介绍下,如何重建输入表% q6 V5 H/ G8 G: a

2 K9 E3 ?* e1 n' s% s; n' ^首先吧文件拖入od,打开inportrec1.6
1 Q) ]% i6 Q" g& Q( k- C9 N* Y  ?" y/ T5 S. w% r9 j% z! G! P9 y( \
如图 选择拖入od的程序,( r6 B- v2 F. o% B$ Y  d

# f' S$ [; o7 e7 J% H0 n+ p# u4 Y2 L& `
这个时候,我们打开loaderpe,- S2 Z( [0 |* T

7 U5 g4 @" I+ \  `2 z( }3 F7 j拖入我们的木马; @: A$ j0 j: h( N+ m) W* Z7 y2 q

) R% Q/ @1 z+ c7 {# n选择目录,
! v  Y: q0 V4 r/ V5 D2 r" j7 x3 c: M
" ?- D: N: C1 L9 |我们看到导入表这里。。。
+ a) r7 s- j% a5 T
5 Y8 N' t' V% |  N9 X& i1 S+ h如图:
$ ~2 D) y: Z/ E) }
& t& W1 @& O3 T0 u9 r, p
. Y3 c) B( X: jRVA地址是0001D000  大小是0000154C9 P1 q/ k7 I# c! Z' E/ C, Z
) c  ^0 c0 v, H1 V9 M( U/ B  z3 d
好的,我们把这两个输入到import1.6里去2 E8 A+ k; |' S! J9 d
6 J0 ?2 k0 r/ @* Z) R- R+ r
就是在“加载树文件”那上面一点
6 }% N$ t! E) q1 y8 f! |: J4 E/ M& I! S7 P
输入RVA的地址和大小。4 B) }! A# M, g8 ^+ d1 s8 b4 g

* M/ v2 w$ `/ p4 z$ ?" a点击“获得输入表”& G. H. F# s4 \; v  Z4 v

4 t# B) d8 h7 O5 b+ K7 {然后点击“显示无效的”7 X/ v$ c% e: Y8 M6 B; G

$ o0 {1 L' _0 ^4 R6 A接着importrec会自动列出
" s3 k: ?4 Y4 i3 {' I# d! ?! A$ s
3 }! D" q! |2 P9 Z2 B. U我们把深蓝色的字体  右键   剪切无效的指针! b" a. @, ]9 I' g$ I; N
, F$ N* o# K" h4 P1 O

' _3 r3 @: Q! _5 W/ n9 i& v0 l最后,我们点“修理dump”+ I$ G! p! m+ H0 P7 p# c9 v% f" C

4 d, [" H" p) ^( M1 b选中我们的木马就可以了  d. R. l+ p9 \0 V3 R; }
3 D+ o) Q& X& a% P& L: w( Q' O% a
最后我们要用到c32asm
" u7 H: |1 C) r/ i& n6 @
4 M7 V& m: X+ V0 }6 r8 Z+ P5 {我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
2 V# l& @% c- B% V6 b4 X: J, f: O) t( |
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)8 Z, J$ F0 ?& W

. H7 v! T+ P8 s- ]3 Z& \这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,0 k1 b! t3 A' k
8 C6 h; d9 f1 a7 D
我们把马子拖入od的以后,打开了importrec1.6
6 H4 I5 U, a, u/ J, S! u; G* |( E& I
在选项那里,选择根据序数建造输入表和创建新的IAT
; d, _( k! R6 E* |# a$ d3 X/ p) f
( b3 f" D: I7 ~# u5 }如图
* t; _8 Q  H% M  c/ z2 y* Z# V( G  r; f! b0 X5 O% T

6 @0 `3 N+ w1 P以后的步骤照上面的方法继续就可以了' o% w5 d7 V; M1 s

! l( X' K6 \7 \( }7 C. c; Z不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
% j+ [8 V1 h: X& C9 Z  D0 a. {
3 }2 m9 l9 p7 i+ ^9 {" J2 }# r0 W$ \因为kernel32.dll的大小不一样。1 t8 S/ H$ y" m" S8 q7 ^+ h
9 s' d. A, D. \
3.修改originalfirstthunk/ m/ ?9 L5 K- I: ~

- v4 O' Y8 N/ K* g: m* v1 V如图所示
4 h; C* t! a5 _" Q; O9 p( C* e
% j0 T6 c5 n( a; j! _8 |0 Y
! ?" m6 W$ k3 G9 g& J我们打开loaderpe,依次点  目录--导入表(后面那个横线)+ M6 i% _2 P; {0 V* K5 H

/ u4 X8 ?5 b3 y5 }& [; P9 s我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
7 H( w  ~  d0 T! o! U: l0 [3 R: E& K
/ S$ v) T1 u" s3 J/ P3 }我们右键--编辑--把函数后两个00修改为FF/ i7 l+ ?9 I" e- t$ y3 T) y6 T' P0 N0 x
/ T! t0 V; v5 b
这样可以过小红伞查杀。  虽然会出现错误提示
: Q7 X' G( f. z
4 }) J, Y5 q  ?* ^但是不影响木马的功能,不影响上线。- u. I9 V" \- j5 m- O" H  s

' V" M. U  d/ u0 b0 |9 ?4.dll后面加20 90法过卡巴查杀* q  ^" u: Z# u. s' O1 S
& m4 S/ R* B. [9 [: L$ d
需要的只是一个c32asm而已,非常简单但却非常有效
: N. |( {  R  o
: k; ]: C) Z3 H, i( G如图4 K) K0 O  g; q6 B$ Y9 e
- L- R. v6 Q7 i: m3 h

% U1 H/ g' v% |2 M) z  y( `" l
/ b. Q& o) S9 s4 s3 m我们可以看到,1 C" Q5 ], `, M, ?1 f1 s. w" u

  z/ e. S5 H( C在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
1 {2 d. i: ]/ L4 ?# a+ M4 g: n0 b& i5 [
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection, @! V& H) `* |8 ~
4 A' P: Q( M! {' y# W7 {
我们只需要在他的所属dll后面加个20 90就可以了
8 K  @, `. v7 A- l- ]9 _; Y% G& C
卡巴目前还不查杀此免杀方法
, e! w! U: d& q8 x" d( o+ S- y
8 p! A9 J$ m* d# e9 t/ U. q" Z" f" p7 D! T
唧唧歪歪这么多,打字有点累了, w$ m2 J5 f7 b* i, D( t

' D# Y0 O* O, D0 i; Z6 L4 l以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。6 ]- L# m# h0 R4 O* G

7 ^; ^$ e$ n2 ?" N" u+ G[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表