返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
  ]& A$ z7 z, J3 I6 U
$ |1 e- G0 A) t6 v特拿来分享给大家。
: N- h' @. D, C9 a3 w5 ?8 W4 k! z7 n  Q; R
今天我们不提我们国产的那些杀软,真的垃圾的要死,! x; Y2 F% U8 @# q% C# y9 ~: j
8 o! @0 ^& T- H
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表0 z. U+ r) o2 ]: O3 t' O* V' U+ L
( ?1 z& ~5 b" R4 m% |( f: E
我简单的重建了输入表就把瑞星搞定了,+ e6 K1 C) Q/ Q- _& w0 i

# k, g; ?4 P& H2 X7 {/ j失去信心了。我曰4 {/ `& G- p: ^3 E4 e, ?( }

4 n) M: K! L3 `5 F+ V: ^  P今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
) D. q. Z& k& s: E# |/ ]/ L! p5 \
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。; F1 |1 [8 ^# C3 |3 C5 v

3 ]8 Q2 H! U, f: z外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
% r2 L4 Q" j# O5 z. E9 s/ T* F) z1 y  H6 S3 T8 x+ h
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
+ e7 t4 {- D& s8 v& ^0 t- G! d2 L& }) D; o. w  d' {2 t
过了以后再调到最高,再做免杀。3 t$ _* T& \2 _

) a+ w3 M9 r! S, p4 y7 E# S以上是废话,
9 Z" P# M- Z3 v! S
3 n3 V2 ?  E& J* o! U好了,下面我们来说下常见的免杀输入表方法。* U) D& Y9 t! L8 j$ @/ y4 W

4 e: C2 N0 N4 q4 ~+ R一。移位法
* m) ?1 F  i& I' g4 X+ n
8 Y7 r+ a1 M& J' E) m5 D这个已经过时了,我们的国产杀软及时的跟上了时代,
5 G/ Y+ A0 E  r% T! K/ t
! h) ]; y" J4 Q8 e2 k移位法在去年过金山和瑞星,还有江民都是可以过的,/ z3 J# D& S3 L* q

$ W6 J1 E" U# e2 ^: o1 F" |+ ?现在的杀软智能化了,移位么?呵呵 ,追杀你。. {, O% T' X1 U/ }* ~

% v+ O/ S$ o9 R! R如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
! E: N* Q* J" c0 C# [1 h7 H2 T; S) q
二,重建输入表' |+ e8 R3 \: _( b5 V( r' G$ {$ a
) B* |$ _0 i" L8 Z
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈( f9 s# z; I1 ~
% y% n8 n. V1 r! V. `1 a
这里我介绍下,
3 `3 m6 `* @6 J- E0 N7 n, N! ?, P+ I8 e+ s' |  B  G; q, N  c3 Z( V
用到工具:. k* Q3 H6 d" j7 K# ^& w7 N
importrec1.6
& I2 [, _3 W& E" d8 tod  N  ]/ Q) Q; Q1 f5 t
c32asm* H+ d& C: B2 X- R: q5 ~; }
loaderpe
4 O8 b: I) r* N, I这里我们简单的介绍下,如何重建输入表2 {  }1 W% h. l6 X
" U  \% g( C& u7 _
首先吧文件拖入od,打开inportrec1.6) o) Q; D8 D8 m- r

& R7 W4 D( B, w如图 选择拖入od的程序,
% m' ?+ a7 W# R& F& O
- Z* |" ~) ~; I' }+ H/ \, D, ]
- K* v5 l% H8 ]; v4 |( n) |2 s这个时候,我们打开loaderpe,) e% P9 w0 p) ?% _- R

4 H3 ?4 _' m( s6 R$ a$ J9 V拖入我们的木马
+ W- O0 w6 V# s: X. o% [# d& f8 I- G5 @/ V9 m8 C: r
选择目录,) {! {, L9 N% \$ l& ^

% z7 o' h; [; T3 q0 ~我们看到导入表这里。。。
0 D" G5 C9 ]" Y/ S) H) v( C3 Y$ \+ I$ @0 ]. j# k- k
如图:% C# e, W. Y& p6 Y% L' }  g
" G( r6 f& [, p6 S/ |+ {/ A

- d. H8 X) z/ X6 P- K8 CRVA地址是0001D000  大小是0000154C
; z& {+ j% G. W8 F3 x; r  X6 y
0 ]- I$ j0 h; ^% e# K: b9 t: v+ `$ C好的,我们把这两个输入到import1.6里去
' o. c: m2 t5 ~: u, X/ k: q" R! M5 m& I  i, y: g
就是在“加载树文件”那上面一点 / J" b0 ~6 A5 k4 x, z
% `8 N$ T" Q4 ?5 m) ]
输入RVA的地址和大小。+ @7 W3 K& Z; u2 X( p/ ^4 x

, d) ~/ o$ z5 B点击“获得输入表”
7 y! h1 F! r, ^5 T0 b, B
/ a! T' @! h* K3 N然后点击“显示无效的”
1 u) c( B. f8 _" q) t7 Q* D1 s/ H
接着importrec会自动列出
& Z3 E; I7 B4 Z7 f4 ~- M9 D' v2 ?; }+ N& [4 u
我们把深蓝色的字体  右键   剪切无效的指针+ U% M! M# x- ]% ^, B# }, P5 s9 c
+ C* a/ `3 W( Z" s6 ]6 o3 x" j
. {$ `, l2 l) z7 i2 g7 G
最后,我们点“修理dump”
9 X, z' r6 m$ d* |0 ], H  z( C' t$ l0 _  w) l& G& K/ d5 Q
选中我们的木马就可以了
/ P3 _0 G$ M- Z- f, ]( P' b
  m5 I, X2 Y: o最后我们要用到c32asm
$ D/ m" ^* j# `1 Z) [, _: z( H4 l, ]2 o
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
6 k& P% ^% H, b& b
. V$ l9 ]  G! r; z0 ~$ ?& C' I这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
! D  R7 |4 e6 z, {5 B- a3 m2 M* s
3 c9 \) P, r. c8 A# f, C8 k+ K4 c这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,  Y; R' q5 c% C7 O2 d; b+ o

7 P( T+ q, V8 q5 ^: p1 L6 @% L我们把马子拖入od的以后,打开了importrec1.6
+ Z: U/ o8 y! o+ ?' E- m% h
1 E( I6 C6 T7 ]$ ?/ F9 F在选项那里,选择根据序数建造输入表和创建新的IAT
% d/ Y4 L% ]; E# {& @+ b, m7 d* n' [' Q
如图' \0 c+ X! X& a; Y7 D! Z! ^/ B
. Z; I+ Y- f( U; E0 x+ |9 E: w' U5 a
4 M" S" [/ m! v- E: @/ ~8 m
以后的步骤照上面的方法继续就可以了3 j# ^+ l2 J7 f& n5 d
% M/ Q3 I2 S5 W7 j: x
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了8 A& t! h+ t/ {
& A' G& D  ?0 c8 h
因为kernel32.dll的大小不一样。
2 C& n! F3 d& _' E3 x
$ N" v2 \0 p8 d8 d" U# _) R3.修改originalfirstthunk
- W" n3 z4 m1 {6 u% C* t$ |6 c2 B3 W: J9 |" q) Z
如图所示0 l1 `6 {4 L. \( e( }. z# r

) `0 K) U; S' F4 @9 c( T8 n. L( s# Z" v8 m
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
* T  u" N+ l- s1 I' J( a! D$ u7 Q0 K& `& y
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll8 I4 C" t  }2 x1 i* t
2 f: d. E  m. F4 V# R7 [3 p
我们右键--编辑--把函数后两个00修改为FF
! h, f0 [4 s/ s0 _1 @6 |; I/ m! y5 e
这样可以过小红伞查杀。  虽然会出现错误提示
" H8 o4 |- I& \1 L  R. N2 {3 }, O' J  N1 ?5 {$ ]+ S5 s" t
但是不影响木马的功能,不影响上线。) O8 s1 D0 F' z/ s. x
$ D% r" D# c3 v) l5 {" X6 n; M
4.dll后面加20 90法过卡巴查杀2 W  l, U7 k4 F2 q4 J" C1 Y
" \6 B# _7 s: d5 d! t3 C
需要的只是一个c32asm而已,非常简单但却非常有效0 q, z  l1 Z% n! X! r0 ^

4 x* u5 z+ Y$ \如图
2 O% F/ h) ]2 S1 K' A6 q
5 ~' d" a& }3 Y! z$ o2 J4 C1 h) F; t% z3 q
+ a" }- |7 @1 v8 v. F, M* m
我们可以看到,4 E% l3 e% A* k7 k' u
0 d0 E  v* D+ L! X/ d
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90# C% A$ G  O* R  L: Y! c4 s& W: ?

! [( D" i/ R. K这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
7 i( w% D! T. Y8 H8 M1 C% W) G( {& v, e* J- x
我们只需要在他的所属dll后面加个20 90就可以了. V9 ]5 T( C2 N
3 n* o) v) ~) x2 M- L0 W/ X$ X
卡巴目前还不查杀此免杀方法
- w1 e0 `. O: v2 f* O
- G- ^% [: K1 D% q* L! ^0 S" ?7 T
唧唧歪歪这么多,打字有点累了
2 u. Y3 H1 ]; Z, v3 j% F: S' K. N/ y! W0 P* I
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。: E. M$ U/ i' C2 s: {6 F0 `

0 f& o0 @" O/ l4 N[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表