返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,( b/ M# j& \0 }1 C, F% t, K: p4 \
8 q) L3 K! @- D7 Q* c8 H+ v
特拿来分享给大家。
. g5 Q! u. R( Y& [" p& V& ]/ `
今天我们不提我们国产的那些杀软,真的垃圾的要死,: _8 d5 ~2 C% S1 r  K6 Z

& Z: c. g: N2 L' L7 g  R上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
( X* E* _1 c* X$ m- Z: Y  Q5 I8 O3 p) n
我简单的重建了输入表就把瑞星搞定了,% K7 `9 D1 Z+ A8 A) G
7 N9 {0 p, A8 b0 n- S3 W0 a
失去信心了。我曰
& r1 r0 G5 ]5 B! w+ s" E( r/ g1 R3 }6 F# T; F1 p" C
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
" h; S5 I% W9 ^" Z( L" j  s- l) K( f0 H: m! l
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。, o* b5 y& f( A
6 V$ ]- e+ h# j5 K4 ]
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
1 g4 ~: A: l+ ~
0 h( l3 P2 I3 R2 n/ W4 e) n- A8 y高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
" `# {/ K0 u$ Z6 Q; o" m  U- J, b/ {6 r" y- U1 Z
过了以后再调到最高,再做免杀。" K9 n  R1 J& L4 s
2 Z; `$ l6 o5 I3 V6 T8 p
以上是废话,
9 [) H) z' S. e) p" H, d; w
. [, y' d5 E. I! M# F好了,下面我们来说下常见的免杀输入表方法。
& T: ]0 t" A1 R0 G8 u; N  ~% n! M; P- v3 }0 A0 v7 g
一。移位法
' ~$ U" q8 x( P
0 a% Q0 d& t- W) A这个已经过时了,我们的国产杀软及时的跟上了时代,
- z+ c! \2 P/ z8 S* W
1 c; E# A+ F; ?, t+ {3 o8 \; ?移位法在去年过金山和瑞星,还有江民都是可以过的,% _: F. c4 u+ a" w
; O: L( V2 B- O
现在的杀软智能化了,移位么?呵呵 ,追杀你。
0 P: z9 X+ Y2 x( d
0 Q! h1 m. ^6 K6 T; e3 H6 t6 ^如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。$ F5 s5 H0 `5 C* H
) Q4 ~9 o% b+ [7 t( n' H6 x2 S& L
二,重建输入表
1 |0 i( A" W3 T$ t6 y/ D5 x. D7 s8 h9 Q+ a3 Y$ k- V$ C
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
4 B8 y) n$ f6 C2 U) h' E& q5 X$ {& R" E
) }  d- A" _6 U  R" G# Q; ~这里我介绍下,
- q4 O1 H- ?3 i2 t! f$ t) B+ H0 s" Z# V
用到工具:# P" u9 ^4 \8 [( |# I. L% {
importrec1.6& I" p7 a; v1 y) ?
od: a+ v. E* D+ _6 _5 K4 r0 ^
c32asm
+ b5 ?8 W, {7 floaderpe5 d, W5 ?5 q; S2 z
这里我们简单的介绍下,如何重建输入表7 E/ D. V; h& K; S
' d+ K% |7 m+ p
首先吧文件拖入od,打开inportrec1.67 J6 B. J4 p% u% w. G3 V

; l- c$ q+ l& F* c" ^5 L  u如图 选择拖入od的程序,
; D1 h) T9 B; c1 J' I
% `5 W' s5 w' g3 s. m9 Y1 y/ {- H
) f) C$ ^4 P$ P1 p7 l这个时候,我们打开loaderpe,! R8 E1 ~* T9 n, K* }) F( V

- [& x5 G/ u. P& z拖入我们的木马
- [4 A9 z3 ~! \. X
6 x) i/ B/ C& _  x( w3 v, Y/ D选择目录,
" H- r7 h& p, F8 ]0 M! D% s6 y" E' I, ]
我们看到导入表这里。。。
6 ^- T( Q8 ~8 x+ a0 B* N
. ^2 |: N9 }- N6 b( l& Y- g7 V& \如图:
  {# o$ p) V% y- C. a( V! B$ R6 K! i2 f+ K  C( ~' s  u0 L$ M

6 ?4 b/ e- }) z, m- n* u2 O  dRVA地址是0001D000  大小是0000154C9 w. D# q" F# h7 E! U

6 Q  C9 ]3 l! J. x2 A% i% Z好的,我们把这两个输入到import1.6里去4 ~0 y! T2 u: r4 J1 ]

8 i# H. @+ s$ x2 {就是在“加载树文件”那上面一点 ' W+ f1 @' y4 f

' D2 i" t4 ~3 g: N* E: a0 G输入RVA的地址和大小。: W5 v& M& y: l$ \! g; J1 A2 x

4 x# ^9 P) l3 H. F4 O点击“获得输入表”
3 B! z* g2 I: R" }' ^% W& q& u- f5 A  S9 M
然后点击“显示无效的”$ U/ p4 W. i2 Y: t! u

" k) m0 G) ~6 U( ^0 _+ ~接着importrec会自动列出
5 q6 x, o* V( Y9 b
4 I) V  J6 F8 n3 s& B: r7 C: T" A5 w我们把深蓝色的字体  右键   剪切无效的指针
, x7 d9 H  w: E" Z
( R/ R% l. s( F. _" g7 ^0 ~& K" C5 _3 c5 F  r& H
最后,我们点“修理dump”8 y& g" n$ [' G$ m+ B8 o$ L

* |. N5 E, x6 N. T( m选中我们的木马就可以了
" Y5 X/ H9 J2 x: x: M, q9 E7 x6 N! ^* V$ g: y
最后我们要用到c32asm
; A6 k7 E- t- \: Z% Y  |; {! [9 \# M" r  ^- I& n# m
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。. Z; Q5 N4 @# \, Y4 _) w
# G- p! V; t/ [
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
3 ~- G2 n/ Y$ n# n8 [. J% d2 T
7 S. z' ~, g: b  m& \5 ?$ c这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,6 m4 R6 @8 e& b' ~

4 N' V! m" I2 J$ }' w* u1 n, n4 R我们把马子拖入od的以后,打开了importrec1.60 S0 {# ]+ `1 o, P2 ~' s( K' e
7 [+ Q9 b% a) y3 T/ P$ A: b( ?
在选项那里,选择根据序数建造输入表和创建新的IAT
2 b! h# M# R8 T- E9 x' ]7 z# I2 i5 g* k
如图
* A- E1 ]$ t6 B: c( Q3 F0 N( |9 E& U: h* D
% Z  f0 d" D: |
以后的步骤照上面的方法继续就可以了
# X- x# C% Q# }! l9 K$ W5 X7 ?' ]  S- R. a9 t) Z3 V
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
' r+ G, y8 u/ u' v* D. r( W% @: i* o; V  [5 \
因为kernel32.dll的大小不一样。
" p* u. U/ m) Y1 }% \1 @1 x
9 L3 i! c3 b) c" z# A7 F3.修改originalfirstthunk
# B; l- \  Y# t; S
+ e. [+ e8 |% S5 a; n6 J$ n$ n如图所示
' c# A  Q8 {$ M$ R1 L7 U) y3 }
1 b1 R( S+ A8 d7 U$ v: u
- V& w( `5 x) ?8 Z" {我们打开loaderpe,依次点  目录--导入表(后面那个横线)
* R" r, M7 \  M1 U+ z8 X. K) c  b- ^5 \) F
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
2 J$ t# n: l2 k: H8 v. o, D; V% w$ p# G% v5 S9 k
我们右键--编辑--把函数后两个00修改为FF
* D$ c1 U, @4 g2 t1 j0 L3 U% c$ h8 A. l' a
这样可以过小红伞查杀。  虽然会出现错误提示1 y6 O% O! w% u' Q# T# U& N

0 Z$ H& Q4 Z% }  q' T5 Y, _! K但是不影响木马的功能,不影响上线。; o  L' b2 V! x  G4 _/ _7 X

( h+ F# I& O+ W% Y8 e( V4.dll后面加20 90法过卡巴查杀" H0 z) d5 G8 |  m  s$ V, X

, T* J* e$ W% B8 v% s1 e# n需要的只是一个c32asm而已,非常简单但却非常有效
! Y1 |" g1 q8 L( K$ v! {5 b" a  h: l8 v* X
如图
" |( `1 F! M: A# x! ^- y/ z5 Y3 d/ f+ z: S
/ ?- L0 w1 y3 s( w8 ^$ Y
$ H/ @8 F* V0 Z2 u  y) v, r2 l, {
我们可以看到,
: x  Z: q" f3 }6 Z6 h$ |- j* R2 ?! U+ W( T  l5 q' R
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90" T$ b% k. ~* `$ A" W% p

  M& l: T! m# H! [) I) C这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection! Z, I. M9 n' q* [" z# U
7 e5 E  y- ?/ O
我们只需要在他的所属dll后面加个20 90就可以了
. a9 ^7 [/ o( i$ R5 m: o' {3 K; P6 z: T! r& x" H7 f% e$ a8 ]3 Z7 D
卡巴目前还不查杀此免杀方法
6 n9 f1 _  M# }
% b4 J2 i' G* {, I1 y7 R& ~2 _
/ G+ y, t5 f1 w/ `( C% Z! u6 B唧唧歪歪这么多,打字有点累了
& V  e9 Y+ P( W* b7 w6 E4 P" X
3 ^4 ~8 l% m7 O8 U" h( z* `以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
: x7 D) U: l6 u( O# v. v- G$ F" x0 H5 J$ ~. j
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表