返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,- _) q) c4 P' N. H8 ^) }2 _
( [! o8 F5 M$ K( ]7 N) n8 H
特拿来分享给大家。
0 j3 ^: i. G3 A0 K6 b; U
7 p+ Q' f/ X6 ?7 P5 ^. d今天我们不提我们国产的那些杀软,真的垃圾的要死,! U& L4 e7 H; R- O4 t) c; s2 l
) o# J1 g1 [" w) ^( v- n* O6 ]) z
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
( H6 T7 n  V6 g* Q5 v/ X4 p; B$ ]% h) r! K
我简单的重建了输入表就把瑞星搞定了,) l- w  G6 D/ G4 ?1 F
1 p1 h1 @. T: p1 b: t
失去信心了。我曰4 R+ c5 H1 E" h4 G# T0 O' [" }0 Y
1 H6 |! v# h6 M+ U
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。( G6 Y# }, o/ f/ w$ X, Q
5 ]& ~, c* x( _: p% @4 B2 ^
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
2 h2 X( A0 G9 K: Z* q9 n, {, s! g% C4 A1 e7 ~
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。' T( i  B5 |2 Y' Q! R. F- w

, F5 `9 K7 j- w. f$ ~. s高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
- T. ?7 I* j0 j0 s) ?" b: g( p- w/ ^# N
过了以后再调到最高,再做免杀。
" ?) [$ V" O) R7 ~7 O
$ p: G; w$ S* ?( ^( E5 j以上是废话,/ V" D$ @5 ]0 v, H7 g, m# i( W6 R
9 m4 z; ~) ^2 G5 l1 M5 f
好了,下面我们来说下常见的免杀输入表方法。# x3 w, w* A0 q3 d, C# M; d

9 V4 K0 d2 z- Z# Y3 P4 u# `" m) B8 F一。移位法
9 ?0 K3 {) E$ g7 ~
; j8 A0 H9 s; A( W这个已经过时了,我们的国产杀软及时的跟上了时代,/ W& K% q) Y2 E$ M' H8 J2 w7 Y

' W2 @- U6 I" i  A移位法在去年过金山和瑞星,还有江民都是可以过的,2 g  |9 s9 @3 {5 |1 v" o. Y
4 K( r2 Q) i8 Y
现在的杀软智能化了,移位么?呵呵 ,追杀你。% G' p- M* |9 F; Q2 g8 z0 ^2 K7 y
5 D* T* C. z9 V
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。7 _9 Q9 Q2 I$ P: U) o/ Z

% h, L% I, s7 S8 F) \1 t; y二,重建输入表- b7 s. n* p5 l2 O6 d0 J; K- Y

/ G% {5 |( b. k7 _& V效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈! i% }4 p7 Y6 j2 Q

4 O3 z' f" W( f  ~0 {0 X这里我介绍下,0 b+ ^1 g7 k# W" c6 i- h

8 c+ ^: V2 d0 x7 d/ `6 h3 I- y用到工具:/ \8 L, _9 Z0 v
importrec1.64 q1 f) b5 v$ {/ j
od0 a0 W: r6 k. G6 n* c* S4 Z
c32asm1 b9 g2 d' q1 X; c$ z  f4 c
loaderpe
& H3 q8 s" K8 L9 B; |这里我们简单的介绍下,如何重建输入表
5 ?3 u5 \$ X! i& I- f  z! c- T2 T- h' k* G
首先吧文件拖入od,打开inportrec1.6( Z2 }8 M- ]9 h; d  Q

) \+ \; w2 U3 `+ X' s/ P如图 选择拖入od的程序,
% e; M5 w( W# Z: \  y( H' h) C) Z  b* w# r: e2 x# \: v$ r: s3 ~

9 R& B7 m* G. T7 _* t2 \这个时候,我们打开loaderpe,4 z+ _5 j" H( J3 `  }% n  V

% Z8 M0 r: p, J拖入我们的木马. t9 \9 i% c' x% l
- y' g0 ?7 Z% ~* W. h
选择目录,
' L: {4 R2 S0 l# G/ h! g& c7 |1 A. u8 j6 n
我们看到导入表这里。。。
! k* J' S: \* v3 P# R8 b: z2 C( `1 Q: O9 x) h' F4 s
如图:
  P3 O, E- Q7 y3 q
/ h+ _. Z3 w8 k! w1 w* J" K/ b. P8 Y
RVA地址是0001D000  大小是0000154C
! {$ ~' d4 j* I) j6 W& l
* K) U( C8 k8 o, K3 d# @+ |好的,我们把这两个输入到import1.6里去3 `2 O+ O8 E' x. ~: ]6 {) G

4 A: W% H6 P1 t" A6 a# N就是在“加载树文件”那上面一点 % g) D, V/ R( a3 e
8 P, q9 Y% t2 R) J9 @
输入RVA的地址和大小。
  A$ H& K. d9 n9 y4 g' o- x8 H9 z
$ D* _# G- o. W8 j8 D' W3 r3 j点击“获得输入表”2 I# I" L0 _4 |  r: g6 t3 O, ^

/ H: E3 V' j, N/ Y( W" T然后点击“显示无效的”
; n. r" J* j* c$ @. w1 y& ^8 n( C
接着importrec会自动列出
' R2 `, P; j1 \: z% h& |& y0 Q4 {7 s2 D4 r6 p) T
我们把深蓝色的字体  右键   剪切无效的指针
0 c/ N$ B' f; B. U0 K" D( G6 \1 |& d3 e& p

7 D! F( d. X+ a( s, o+ N, l最后,我们点“修理dump”  `2 ^& Y! V0 W' c5 f# G/ o2 j
# K( l& t5 p4 N: O
选中我们的木马就可以了
7 p1 Q! z, O# a& b) q* W& L1 S
  ?/ w# S! c2 [* G1 M/ }最后我们要用到c32asm
% U! o+ f. @( }  Y1 ^- M1 ~- a2 J
$ J" |* `  C& T" v; U) \我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。0 J& ^& t2 t# c' Y: x& z
- z7 I5 g  g9 L7 a( ^
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
+ Y* ~4 S5 E& L4 m- I4 \; Q) n8 y- w% }+ q' b2 G
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,, A* M# S9 p8 q: d: F
1 c" d: d9 K( D& O, j
我们把马子拖入od的以后,打开了importrec1.6
6 |4 r* Z, B$ a. P: l6 l9 r0 ~6 _( P1 D$ ]
在选项那里,选择根据序数建造输入表和创建新的IAT' i7 o# i& J  Q0 p2 @: V: D% O
! ~& K) d  y) \! e. U5 {, m: j
如图
3 w" J7 m, S0 P# O( ~5 n$ U3 K& r+ M5 t. h! x  ^

7 a& ^1 i9 R+ p! S以后的步骤照上面的方法继续就可以了% j; F5 I) D+ |2 l  e) d: {: c

, N* h# N/ o( M% W6 p不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
; L4 L6 J2 p6 r& h% N- s
- K# A8 H/ I  P( M5 [因为kernel32.dll的大小不一样。
, r/ o! r& `# \8 z" v% F6 W# o5 ?% _+ H9 N
3.修改originalfirstthunk8 Z2 U; B' Q$ m
) T8 T: I$ d! C; h8 a
如图所示0 \# c; O5 Q; s; Z, d' Q
2 p4 O5 m4 A& r) k3 A8 O
7 o/ Z# |  V% s/ `" ^1 R
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
6 X0 J, Q" k5 h, I% w8 g  x8 J& Y2 i& o% E; I0 V5 r
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
& z- X- d; V6 I% z' a( a- G( G' {: g
) v& ~8 M( O. v0 Y" _我们右键--编辑--把函数后两个00修改为FF& b( c- ?' `  q( Y" W& s7 y: M" F/ b0 u

0 u0 Y* A" g' C3 Q这样可以过小红伞查杀。  虽然会出现错误提示
/ z+ O. Z) E0 z" T# C, Q8 |% \5 o8 j# L" l, S
但是不影响木马的功能,不影响上线。
6 G# _3 ?% b4 N$ v9 c1 ^9 @, B) n
7 v/ L2 |2 E0 A7 q4.dll后面加20 90法过卡巴查杀
) T  y/ M/ z. y' a. B9 o# a& a! i  n- c7 D& u# m
需要的只是一个c32asm而已,非常简单但却非常有效
, l! \0 e; q7 p: Z
0 W3 V/ C3 r  `+ r如图% k" |1 V/ G( C5 {% U: Z# E) \0 v0 p

$ h' r7 I8 V6 L
! }' l- x; x" @; p
# \7 ?+ g) D0 s  j! Q0 }! V我们可以看到,
& ?7 ]' A. V8 v  P: w9 M; J1 T. n1 c" T9 t9 s. E7 z
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
, W: p! w# Q2 Z' v" u# N
7 p3 H  J" r2 t4 e# q- w3 ~这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
, C- p. c- h! w; y
3 O+ R" \1 ?5 {" t我们只需要在他的所属dll后面加个20 90就可以了- ]( W" @- S+ m$ I( `; e- B7 D

: G  B- m: e  @( H) s  C卡巴目前还不查杀此免杀方法
5 P( O& [4 `$ M4 z5 {
) I2 p2 K& k$ e" R! b/ B6 P# m% i: b/ h5 M" ~- t% Z5 S
唧唧歪歪这么多,打字有点累了' c: R9 s* N7 m: a3 a+ u$ S! N
" T% I( ?( V2 K7 F
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
) f' S& J: o  ^! _! n6 o/ s5 Q
4 i6 j$ X2 Q% m[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表