返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
! w6 ?, Y% E" Y/ F$ w0 d0 z; t, P
5 d% F# g) F: y8 ?特拿来分享给大家。
8 T! u5 T8 L  C6 u0 z8 t9 o; c* }9 c! B
今天我们不提我们国产的那些杀软,真的垃圾的要死,
, X/ Y$ ^. h* ^% ?
4 ^# }, L  C. h2 R! G$ N上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
2 W, q3 B  A* Z4 f  w" q
, d8 j5 n: f" ]2 \; y6 p我简单的重建了输入表就把瑞星搞定了,2 q% B6 \0 n+ ?. Z, L
2 Q* d: N$ i  |% N  U
失去信心了。我曰
" Q8 q1 `/ [- o* C/ p/ g% L7 I& {* F0 b4 c$ e: ^7 g, n7 o
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。) ?* w# y% K( J& ^+ }7 e9 W# }

; f) s% _8 J) C  l; c8 `首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。; a" w% V! B8 B" R2 t4 m) @( }$ W

+ u5 N/ o) x; X# u) L4 d外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
. a' P4 H9 a+ l5 L: q8 I4 @
( E- G: }6 D2 _* D高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
: }, l% I" [2 C8 n7 [" h' a! ~9 N, F8 f0 f
过了以后再调到最高,再做免杀。
9 w6 ], _' }0 g9 J3 I: o6 L: @: S5 {: z& @' P* M: U
以上是废话,; B/ S# n* u' }# D* U
$ e/ K, q1 K" @0 ~( F1 `
好了,下面我们来说下常见的免杀输入表方法。
& r7 b8 T  J9 k: X/ L( R- Y
# a; }9 m9 p+ m% [, r% n" A' m5 B6 `一。移位法
6 O7 k) @* F: ^  x! S8 j# A4 U4 T/ q# [% Y
这个已经过时了,我们的国产杀软及时的跟上了时代,4 h- q! H) c3 W  K  [) _
5 {. T' _7 m% C% A3 t$ P! \
移位法在去年过金山和瑞星,还有江民都是可以过的,
1 C2 B7 P# ~$ g3 Y' O3 _5 F" v7 Z6 i5 F5 W; G( Y( `
现在的杀软智能化了,移位么?呵呵 ,追杀你。
' J7 z; q0 j1 S, R0 R8 b
3 M5 M0 f# Y0 H7 W) H. x, y* t如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。. v" B, P, ]2 Q! a( z# \* r" f

. Y* R7 v8 ]# N0 c  R$ R二,重建输入表
, \+ h  h1 W- U$ y6 E
! m4 d( ~  ~7 E9 D5 L0 N效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
1 J0 s+ C0 z: s: \* d, K3 U+ U  A9 G! Q* t
这里我介绍下,- D$ t' [2 t# O! d/ u
/ D$ P; `) ~6 u5 E" ~' W
用到工具:- Z2 c  s" ~! T6 F
importrec1.6
  P; n/ R: N* j' `  hod
0 M1 I, M4 H3 ^! v, M( s- D3 M! ?c32asm
. L5 Z6 M  `& h* N: _" n4 U5 E2 S3 lloaderpe/ v+ G3 T& ^9 c5 Y) p5 K
这里我们简单的介绍下,如何重建输入表- O0 r+ I6 J$ X% o0 e* s' S
6 @6 ^3 Q% k) o% F$ d) W  }* t( v
首先吧文件拖入od,打开inportrec1.6" f1 ^! d6 b8 ?7 w- d/ Z

. M. b+ x" B* B$ ?, c. J如图 选择拖入od的程序,
" a* Q0 H/ R3 X/ Y6 a8 y1 J
7 S& [% _5 ~0 p% o( v
: h! I/ G0 F; D! \这个时候,我们打开loaderpe,0 m6 w0 s# V$ S8 p0 @) i0 Q) F
' Z0 b3 Q: W% x2 l) L, q
拖入我们的木马( Z2 T' X3 c& w6 u' A2 W
! s- z! l+ k# S7 s  A( V0 R4 o
选择目录,: Q8 \5 k3 X: X1 \9 [) |. C
" Y0 S$ j; B1 K4 D% {8 ?
我们看到导入表这里。。。* N" H- e! ^% N/ A! o/ h( d( c; `

; m% Q7 y2 Z/ \+ Y0 z如图:; |* C+ ^8 i, b) B

: {* c1 [" W. L/ X; t. J1 X  @# I6 ?9 J
RVA地址是0001D000  大小是0000154C
7 E$ g  n( E, b, i" V% `) `" Q  n! `/ M3 O* R+ j9 u" F2 m
好的,我们把这两个输入到import1.6里去! G8 R( _; o/ M- O% e
5 ]2 }! J1 @! |# G) O5 h# F. g0 L7 o* C. J
就是在“加载树文件”那上面一点
& _( z( r  k6 T' I0 Y0 p* W. O( n3 m$ n6 w: k  n: s. E9 H
输入RVA的地址和大小。
+ @5 q- z' v: n  i+ K) Q1 S% f: ]* C0 \5 Q2 p* _% ?7 q
点击“获得输入表”
0 w6 v7 v3 m' A. ], ^
0 x& G4 f, |! q0 |/ M! X然后点击“显示无效的”) N) \& K% M0 i

, g6 v6 X" J# R; W# v: |接着importrec会自动列出
: G+ p  G: v' _8 y$ z" D+ \$ d: w4 ~) Q  _- s0 x
我们把深蓝色的字体  右键   剪切无效的指针: j: c; _$ y8 E5 X' g3 i' M
- L: [9 W, U* p7 @& V$ j

7 P4 Q% x) c, |; L最后,我们点“修理dump”; F" I& \9 M) E
  Q8 k- B2 p3 W* l# _
选中我们的木马就可以了4 k2 n1 v0 q9 S& d

; `$ y2 e( n; s; P最后我们要用到c32asm
: W. ~9 d; B& ]/ }8 C
8 X% v9 M5 g5 f我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。3 G/ H4 ~. ]$ T, ~4 H) m" m2 v( y
6 @# b: a0 K; B4 m- n2 C7 x
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
% u1 Y! Q7 o/ y" {, J: ^2 ?# S2 r) v$ @- L
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,, D4 {) s# ]8 U) s1 w" @( O
( a( G2 {3 M! Z6 |
我们把马子拖入od的以后,打开了importrec1.6( o, p9 v$ U& g9 @) v
: x- O  E4 p2 z& Q5 o6 L7 Q" i
在选项那里,选择根据序数建造输入表和创建新的IAT2 v. j( w: k% r2 D# g# A7 q" L4 D' x
6 y% U. c/ S& h/ j
如图
" X5 {& }  S  O2 R. e, [* \8 K# x
) c- b3 i1 @' H5 m# ^3 j/ {8 t
以后的步骤照上面的方法继续就可以了
' p: o+ ?" B5 ?5 g/ R$ e) ?
1 |5 J+ f0 N" R- e2 E* Y不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了( d& }/ k, a0 ^1 n; _

) _; x: K# f' s因为kernel32.dll的大小不一样。
4 @3 j& J: ?8 w3 v0 G! ^, b, p; J) W! b; J1 B
3.修改originalfirstthunk
8 {3 w$ \- Y. s- R" y6 D8 A/ M. h$ `" g+ G( }, U8 h) G: o
如图所示
7 \; ^$ |- i/ C+ `' V( \% p! D
, T- t4 w# D5 _* L3 S, J9 V1 d: S& [  w, \  L- s
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
) ]; W  @2 `$ N4 h5 {8 @+ Z- S7 E+ l+ \
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll" G2 ]& P( ?9 W/ F1 r

/ n3 C$ T: W6 b* q+ f) J8 z0 y我们右键--编辑--把函数后两个00修改为FF
( J) E: m8 {; M* Y
2 [2 u: d6 S+ }. M5 z8 G- J这样可以过小红伞查杀。  虽然会出现错误提示* F: O$ M9 K2 _3 ~' E0 O8 d
" e5 p$ f8 F8 w- \
但是不影响木马的功能,不影响上线。% D" ]3 K8 C3 q3 h# V& K
# B5 ?' `2 x) `) _/ Z0 [, [5 G
4.dll后面加20 90法过卡巴查杀
, F2 [! }! O$ B0 N2 G$ H2 ?& W+ d0 f: _5 }8 G, t
需要的只是一个c32asm而已,非常简单但却非常有效5 Y" Q) X% s# O

, u5 C& Z7 e; h7 p- |) R8 O  f如图
9 p0 F" P# B1 L% g% z, `. v  F3 k
% X7 O, N3 n" M/ e5 f

$ \# b4 }6 Y' u3 a9 x* e7 G5 }8 d我们可以看到,) |' ]( S7 ]7 E( m: ]' C  N0 G5 Y
; O+ S2 E& Z/ {6 S8 Z9 F7 N) x
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
, a* M1 h9 I0 G$ M# I: g% o. D, I0 }: N- k
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection3 E3 G% Z; L  W6 y4 J
- H" p, k% q4 @
我们只需要在他的所属dll后面加个20 90就可以了
9 X1 q9 @8 G5 n1 N2 g4 H, z9 f& [! A4 I, P
卡巴目前还不查杀此免杀方法. g, Y6 x6 p8 r
" t8 |1 }: z. @8 M

/ V" \4 J5 f: v4 Z8 Q( w唧唧歪歪这么多,打字有点累了  k8 a4 u$ Y7 n3 K5 m: E
, V( u5 Y& q/ q1 Y1 x( n
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
4 P- t! `. E$ ]2 P9 b, ?9 ]
* ?# n% k( H3 X5 {[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表