返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,+ r& L: n0 O3 L

; J: \( R4 N& ?8 H' G特拿来分享给大家。9 d# Q9 p) k( p5 y3 `! }

2 }0 l: P* O* d' s% q今天我们不提我们国产的那些杀软,真的垃圾的要死,- M" W& {4 C5 `! H
( i& M4 j3 z9 H4 \$ h2 W% g7 W
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表# t% P4 w# _# Z, G' t$ ^2 S+ ^
5 _$ m% S$ i' b3 l) M2 e2 x
我简单的重建了输入表就把瑞星搞定了,
  R9 Q8 ^' e# ?; D
5 ^( b% z' ]) N% ?$ I- {0 F失去信心了。我曰. h# i5 Z# D8 O8 P7 S: x2 k

& |/ D- ~5 [4 T- B4 P& E今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
+ K# x' Q' b* O1 C3 a  P" U2 |
9 n: H. r4 F; A+ r9 Z首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。' s0 c4 E3 Z  E" x
- w$ y) A0 h$ Q
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
  A6 y, i2 X5 @1 C) n* ^% j3 I( a) v7 K2 A, u! O) C
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
* k6 V, a2 D1 y
7 P4 f( E) [9 f( _2 ^过了以后再调到最高,再做免杀。
6 H) M; U# U7 Q  ]3 h; i! z& [0 @9 j8 W" z! c/ W: L5 F! X$ O
以上是废话,
- E) \3 n* @/ s7 B& k; I6 K* k1 b+ Z7 j
好了,下面我们来说下常见的免杀输入表方法。
# [$ l* F1 D  b1 Q: T
$ q3 H& Q+ L, b6 S$ x1 |" a+ i# J一。移位法; r; n8 x% m" M0 A) G

2 K* t( W& t* W9 T7 ?这个已经过时了,我们的国产杀软及时的跟上了时代,
/ K/ V) C! F( P* `( Y3 Y1 F) ~4 A- G- n" \- r4 p. v* H
移位法在去年过金山和瑞星,还有江民都是可以过的,. Z! S, i( i. _+ q7 I

; P/ E; {/ W+ _现在的杀软智能化了,移位么?呵呵 ,追杀你。
6 i" n+ D; d  n1 K
9 {9 \8 o( H/ K  j. l* T如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
! {' U6 A' Y9 Y5 R5 }
) O1 w- n+ J1 [# m& \二,重建输入表
$ t' g2 L2 g; [% t
$ t- j) L5 e. H+ c效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈7 w# q: [) T6 w
8 M5 o" N! u/ i# V6 a1 m" N
这里我介绍下,/ [1 v; v* I* ]6 t" V: i
; F" S' _: S3 G# K, V# [
用到工具:
( F7 z) Z3 `+ L7 ]+ v9 e) p* F: oimportrec1.6
, u* [: P+ L( N! C8 e6 t# g! ~9 i2 God. z( I$ B" Z+ h9 s( b) D
c32asm
) e+ P$ C! Q: i1 Y- ~4 G" Kloaderpe
% z) A# ^! w: V* `% v1 v9 i这里我们简单的介绍下,如何重建输入表5 I; V# ~& c3 _3 {0 P

& [5 T2 l2 S$ d/ `$ n% e首先吧文件拖入od,打开inportrec1.6& t) H' X7 l5 `9 c% b

, B0 c7 ~2 j1 M* b% E( y1 k如图 选择拖入od的程序,5 a$ ]/ |$ p9 B' u0 x
. h0 f6 {# ]- G' s7 T

9 j! \# \. ?2 k- D* @- m这个时候,我们打开loaderpe,
: i7 Z$ D( F. K- Z
) ?9 `2 |  K- p拖入我们的木马
/ H9 h2 Y$ f9 d2 E" a# a3 ?4 D9 a3 J( _0 \/ S2 V
选择目录,
- C/ j, Z; I/ h9 o/ G+ m( ^+ H7 v) K8 z2 M& F7 {& b; b8 a
我们看到导入表这里。。。
$ N; {7 m; i4 {1 p" ~5 w4 }- g
' q0 `2 B0 |" c5 j如图:- |% h2 R) B0 ]

2 x2 p' I) V' j! H+ u* Z! L
& p2 \. `4 }$ d9 O" i' f! H5 cRVA地址是0001D000  大小是0000154C5 `3 O: c& e' R) R0 a: F2 m
! x! r; K5 |% i5 |
好的,我们把这两个输入到import1.6里去
5 m7 }1 B* ]% Y& m% I
$ W* {" ?* G) m& m就是在“加载树文件”那上面一点 7 L6 i- H" F7 H0 C& D; K
3 _- M1 W4 e8 Y7 M) z( s, U
输入RVA的地址和大小。) e  r+ F& l  ]9 I; E6 C4 {

1 w2 c$ g8 W6 e2 |  D/ `- d( Z点击“获得输入表”
% N# R8 k: U6 m/ c4 P' A. _6 T. G4 [( m: |* G4 G+ H! }
然后点击“显示无效的”- T% t) N, ~9 C2 @: c2 M
) e& Y1 k  A5 c2 E9 @- O, |
接着importrec会自动列出0 v! b( N- j1 K' v$ y+ a9 c

6 z' ?( i2 A2 z  y我们把深蓝色的字体  右键   剪切无效的指针
7 T" v& `& D* S, }$ N/ ]1 {: a
7 b2 B$ D% j6 v! K
" K8 G8 z0 c: P" ^' Q/ p7 {& a# u4 f最后,我们点“修理dump”) M! v8 [& @) h2 w3 E9 O

+ @4 M& l2 m" j- s选中我们的木马就可以了% I: `7 K; G0 F) @4 x. N! t9 l6 k$ \! k

: v# q$ T: S% R* t" ?( d最后我们要用到c32asm, l- a8 A  Z& @5 T- N$ h, W
9 Y3 y% f9 b9 \
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
( e/ C& G  T! r) B) |! ^% h. [- [
7 y& q$ h' }. s# ?7 O这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)7 k$ B. W, F6 q7 w% x# e9 g7 i
9 L( J. |0 G! m! {
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,! x& v4 a1 b( x+ m" S! j

- |1 G+ W9 f( L# Y# F  ?: }& u' a我们把马子拖入od的以后,打开了importrec1.6
4 k& H( M( y8 y) @8 \! S5 _7 f+ x5 I$ |/ Y* L
在选项那里,选择根据序数建造输入表和创建新的IAT2 ]* b1 j  L) u/ N7 y

9 n9 t( L1 H) _$ f" s$ W如图/ D, K: f( D4 A# ~# _- @: u' ]
+ |: f! J( Z3 S: F' O

3 b; [* j' J( M8 ^" e% x$ s以后的步骤照上面的方法继续就可以了0 A2 |8 T( e  P2 S/ ?4 ^
$ w. V" M7 |& \0 I5 U. B) q
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
& S5 j/ z5 N& X- D/ g: R) x' N/ A3 p3 C) i: ~- p
因为kernel32.dll的大小不一样。
' y& g) ^! H$ R# m" y( J
7 n+ b2 X, u0 w3.修改originalfirstthunk+ E+ |1 K1 e& Q3 T3 p

* z3 p3 K$ l& L/ i; b' L2 g2 H& B如图所示
9 S/ N) q* x" l* r, ]9 F5 y( J/ M! n
: C6 l" b/ ?7 \0 Z$ x
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
; d4 U% ^  H! f% h( J3 R! Y
& z3 h+ ~0 N8 l2 g% _' Y& D我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
7 z; |% h, H' n5 h" m8 k
. ^% D9 ], q; j. p* ?2 i我们右键--编辑--把函数后两个00修改为FF
' K/ j. p  _) W7 N7 `4 K& M- P; Q- q- y6 E1 l  ^' O
这样可以过小红伞查杀。  虽然会出现错误提示; E% h; H6 J0 L3 X2 q) P
' z& R4 q* X6 i- q; ~7 f- Q: d
但是不影响木马的功能,不影响上线。
* ^' O% \) R6 l, _; \  N& A. Q3 ^* S4 W/ q! G
4.dll后面加20 90法过卡巴查杀) f, d" _( C; l

' B! l6 A2 s0 I8 l1 w需要的只是一个c32asm而已,非常简单但却非常有效* P% _/ C& T% ^2 w0 ~' x2 r6 q, @
# [: x& Z6 e7 r. u+ W" ?
如图3 j* e! x5 C7 P& z

, [6 b2 F' i4 e7 k2 r* b6 [$ [7 _" y5 m4 ?: D& f& r
  N' _% U( T5 T7 Y$ Q$ r
我们可以看到,4 n) h' C& i1 e! G& Z
+ }# W. h  Z1 f. N+ {
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90" S0 p: ]7 I% q. S; w& ?

# ^. |6 A8 n& _/ c8 z这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
. u+ u# s3 M' c2 \+ c5 i9 l7 n, U* d* T% z5 q- D
我们只需要在他的所属dll后面加个20 90就可以了
/ ?  C3 v# c. c% V2 ?# P) Y( Z% d% \* n7 j# {. X
卡巴目前还不查杀此免杀方法
# `3 G6 f3 N. o9 U5 Y: k/ }
% ~6 }" F+ Q7 Z- e+ {. L6 \* G# E, Q0 i- N0 b1 O3 I' e
唧唧歪歪这么多,打字有点累了
7 [3 B" n. Y% L/ W1 o
$ z  K2 r) I0 }# C* V+ n4 k以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。! v* S3 j. D  [
9 N% N" H6 k! ^) o
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表