Board logo

标题: [原创文章] 木马免杀之免杀输入表篇 [打印本页]

作者: 1335csy    时间: 2009-3-31 11:30     标题: 木马免杀之免杀输入表篇

最近和一位木马免杀牛人交流,感觉新增进不少,+ t: \6 C8 t; |) P' H, G

' F# ~7 y! f' ]$ W3 P9 t特拿来分享给大家。6 X4 c4 i+ g5 j/ R, S$ ]2 v
- _8 h* h6 t/ J$ H7 K
今天我们不提我们国产的那些杀软,真的垃圾的要死,
. N/ ^8 u: H) J9 v7 l6 D1 N( H4 m) ~* e- j8 S4 ~7 E( g9 k& r
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
3 n% k$ u$ T- S* P0 t' T& G) h3 n' X/ ]! @" N
我简单的重建了输入表就把瑞星搞定了,. i+ x: |) j8 b- Z. o+ y  t

% I& }5 T# M+ P失去信心了。我曰
* o4 E: E9 G* `) G# a' a% C2 V2 [; Y
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
# E$ M- X" E5 n5 o1 ]1 T' f8 l- D4 ^, V. y' S
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
1 d( ?. u* m3 M" j/ g' ]' H5 y0 w1 N5 T  N) h: V
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。, k0 k1 q6 V& b* D: v' X1 s; q$ M$ ^

. E3 U( J) f6 R/ V, ?& M9 O高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低8 O9 i/ B: O9 J( N8 o( c
9 V/ C+ w  F  b$ b
过了以后再调到最高,再做免杀。  {+ w+ x: [, I6 B/ v  h
& g. _- \: }" n9 C  ^
以上是废话,3 E2 `2 H4 t: d/ I8 E

4 t. i! c$ n% V5 w% c) N' k4 ^+ k* O好了,下面我们来说下常见的免杀输入表方法。
* g( H$ u5 B7 x2 }( q9 ?: ]
7 \; l0 T' G0 r+ D% m9 \一。移位法
: l; f# _: ?8 @' p! d& Y& p0 D+ l9 c/ C( {  k( M
这个已经过时了,我们的国产杀软及时的跟上了时代,/ g/ C% k0 c6 `: `: n" j9 f

9 N9 \8 c" A$ i+ u& K移位法在去年过金山和瑞星,还有江民都是可以过的,( ]" i" S% S$ A; S9 B! F
$ w( B; u6 K7 O& V
现在的杀软智能化了,移位么?呵呵 ,追杀你。
2 M7 H& s8 C% ]/ ^
! S( o! A: k$ f8 G) C, @4 h: n如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
3 o& t+ G8 t4 C* z
& L$ o8 f+ `" J) `二,重建输入表
! m  G( [- u2 _1 k) S2 M4 `% h' a& L3 X3 `
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
, U# j& l( y; Q0 T: w  o, L  G6 ]( [+ Q7 v: P+ q
这里我介绍下,
4 l; V) a$ R+ N( v* C, c
. k  N4 J  r/ p9 G' C. M用到工具:
. ?2 t9 l! ?& {" y- N: [' gimportrec1.6
( L6 u/ D# d0 d- V/ N6 d$ Fod& A' [$ _3 N$ r9 ?/ M' y  e
c32asm
6 Y% W* U1 ]) L" }0 [& J7 a3 Uloaderpe
% E, q0 y  y4 H+ E. F! i7 t, Y这里我们简单的介绍下,如何重建输入表
# A- |! \0 a+ Q6 I; A$ q
' L" t& F- y+ @! j首先吧文件拖入od,打开inportrec1.68 a  |) q, D5 ?. M% \( _6 n
. D0 y; N, V# Z
如图 选择拖入od的程序,' ?8 h3 V5 y) _6 m7 f! ^

$ B; N- M; p$ _) f* z" f. h4 l" \; g* F1 j: d
这个时候,我们打开loaderpe,
6 c$ L  e) a" O: _/ \. G
- E' a' `! I6 |- u; W拖入我们的木马
6 R' Q4 _2 z; g5 T6 e& k
) k$ ?+ |0 y8 z1 \8 Y选择目录,' j% w, a# W0 U6 D' X, a; N: r
8 t) U( T( N- X* I# c: X- W
我们看到导入表这里。。。' v: H) n) e5 ^' R+ S& Z" h

2 o3 t7 e3 O3 X% Q& \* A( ]如图:1 W4 @6 G3 n( Z: J, n4 e2 d* b- y

: W. ~, r/ ~+ Y7 ^
& A3 s8 K  a* ]$ {3 ]' ~RVA地址是0001D000  大小是0000154C
$ F0 h7 @. U& `% g
* N0 x$ z8 @* i- r好的,我们把这两个输入到import1.6里去2 u. \: n) U, }# v

8 a  N& y2 z: A$ `' ^就是在“加载树文件”那上面一点
4 v& t8 ~& |, J0 m3 N- z
, C$ N' l' {2 g: c& U% m7 X输入RVA的地址和大小。. [; u: p) x& v! |( y

5 s7 x9 |+ u# t: h% w: {8 X点击“获得输入表”
! A1 u" g! i4 U9 a9 D; x; [% F8 l" U' S. q; D3 G9 q$ w
然后点击“显示无效的”
2 c! L. {! e7 A0 \% U5 ?1 c. ^2 K6 s
1 y; S- |8 p# D5 `3 g5 B, [接着importrec会自动列出9 I9 {% P% Y- X# W) C

4 v# w5 d+ p/ Z( I8 r" w0 r; e0 _我们把深蓝色的字体  右键   剪切无效的指针8 s$ I( g( P- `' l0 f! R
9 f! h6 H: l+ Z
) a2 s3 f$ P) i0 Y
最后,我们点“修理dump”
/ Y6 Q0 k' }& l4 A% P+ }0 @$ j9 @! u# n7 n
选中我们的木马就可以了  D7 a( D$ z7 N0 k$ ?% e  N
. f9 ^# T( w4 {+ q) L# O; `/ [
最后我们要用到c32asm0 v* F" y) \" l+ E( m& ^) A; I

3 _1 A" G0 i  q  z7 b1 w我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
: N2 F( t  ^! e( `# g: T5 T* G$ c6 j! H0 B  \8 T% Y) I
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
0 s4 l3 Q+ S( C( \+ U4 J: q1 Z& s/ @  G) i. j3 U4 n7 M
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
7 [1 K1 g: _" f! C, D7 _
" R- o9 y8 l0 f0 i我们把马子拖入od的以后,打开了importrec1.6
+ ?! |9 Q( y1 ~: }/ U/ X: x
0 _" ]* O; Y' c在选项那里,选择根据序数建造输入表和创建新的IAT
( B: U3 K. \; x" g) T7 O, H6 e2 n: D" M' q! j: r
如图
5 F& K" ^+ F+ h( m' M; Y: I! V3 u  J8 V
; Z" _* `7 W2 G% M! \+ H( R+ @2 `% b
以后的步骤照上面的方法继续就可以了
/ q: Z- a; E1 w7 ?4 V# b/ y4 {8 X. H5 a" \1 t
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了( [0 ^3 w& r! O1 @
/ h; l- _( q- o* G+ l( V7 q: U
因为kernel32.dll的大小不一样。  r- n- z% }! w1 m

% X7 e: W# b! t3.修改originalfirstthunk& K9 b4 X  h, J% w. m" v
6 W) k4 m: i0 c4 u% n% p8 h; ~
如图所示* k4 v' {) I. M7 B
. F6 F" |5 i7 P! y: u: n

; i; S: \0 {7 W: b7 P我们打开loaderpe,依次点  目录--导入表(后面那个横线): B: I( o% N* g# u) k' _
3 Y1 r4 u* t/ ^! e0 \8 V
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
1 f8 k+ }" s3 G, f$ h
; v6 I" i( f! ]: O  v* ~我们右键--编辑--把函数后两个00修改为FF
) t6 R- }* ]+ ^9 u! e4 G) s! Y5 G( p: `# Q
这样可以过小红伞查杀。  虽然会出现错误提示
3 h, P6 S3 q$ z* V* f& J8 p; j7 l# m" l9 S. u% {0 T
但是不影响木马的功能,不影响上线。  g& @- j& d& y9 v9 L* h8 s$ L
0 |$ C2 L7 Q; a
4.dll后面加20 90法过卡巴查杀% \. ]3 l) Z. L. s( g) E

8 A: X/ s5 Y! W( F需要的只是一个c32asm而已,非常简单但却非常有效
, |+ G1 x$ J* }) H1 T
3 `0 r' p, f7 q/ f' O如图/ H, L2 o% e, D6 n& ~, e! N
3 T7 K2 w6 t: f/ F3 [: q

. W9 c. a( E, t- U8 `& H
/ p0 D) A/ D# A7 U/ k% c* K我们可以看到,
% {3 u; s( e8 w- N+ s* p: g2 V- R$ r
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
, M) E5 r) w/ x6 G* f9 g+ |) |( \' a: J5 l6 z) T) w
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
% M! \8 A- M; m
3 _8 ^: b( S: i* H" i$ Q& a1 f. Z我们只需要在他的所属dll后面加个20 90就可以了: c2 }* I% Y5 {" d: m; ^  ]! w" s
7 q- S- P6 T9 T, d4 w6 v+ v
卡巴目前还不查杀此免杀方法3 U: s4 U# c& `  ?: [# Y
' {6 A, I! q& J

( C' c9 j! c3 N$ }% t* U6 A; L4 ^唧唧歪歪这么多,打字有点累了# q( n5 E# R8 |3 K6 F
7 y+ X+ B% H: \5 N$ ]
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。; _$ P- P/ {/ J+ M
* z" {) d7 U" P( n8 n
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]




欢迎光临 【3.A.S.T】网络安全爱好者 (http://www.3ast.com/) Powered by Discuz! 7.2