标题:
[原创文章]
木马免杀之免杀输入表篇
[打印本页]
作者:
1335csy
时间:
2009-3-31 11:30
标题:
木马免杀之免杀输入表篇
最近和一位木马免杀牛人交流,感觉新增进不少,
' i2 {7 @) E2 T/ W( y0 V* f0 F
* R' s& R! n: L* M; k
特拿来分享给大家。
3 J5 p) @& R/ b5 G' p, u" e
( I9 w/ u$ i& A" N5 l6 s
今天我们不提我们国产的那些杀软,真的垃圾的要死,
g" ^3 R/ I2 C% i6 D
1 |+ P7 h0 v G6 w( g% x
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
; X0 O" e% _, ]' Z) A; [2 A
! N' i. P+ g! n& d1 e$ t' }6 c
我简单的重建了输入表就把瑞星搞定了,
5 k; d: D; b. X; \0 w3 \& B: z
5 S6 ~) A2 i7 o2 T* A, X, d% C. v
失去信心了。我曰
" Y9 |* o4 M: R% l6 D' Q
! P) w( a0 r2 A% G" n# y
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
3 R/ B; R( S2 A
9 @9 o2 o8 Y" Q% C- Z
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
/ u% h8 {0 q3 Q N1 l
$ A" m& ?& g4 [0 ^! S
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
( G# N5 h' F! a2 R, F! c8 d, R6 v
7 F" S- `1 w* W% o0 b/ X; @
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
4 I7 X$ V) w5 [4 t a6 ]
* G8 N5 C# i$ m! j/ a
过了以后再调到最高,再做免杀。
) ^3 j! E8 N5 @+ K
4 O! X4 V2 L( c4 l1 l
以上是废话,
2 L H" h& X2 p& l; `% [% S' s
7 c0 l% s6 g3 c, L7 m b H0 e( n
好了,下面我们来说下常见的免杀输入表方法。
# q1 x) [6 q9 X8 X0 _; Z
( T+ v* ]$ x% V" y C7 q
一。移位法
8 }+ X8 B* ?( i5 ]0 b
1 a1 T. I8 w! M' f/ `+ {
这个已经过时了,我们的国产杀软及时的跟上了时代,
2 f3 d: A" T" J" R v% E) ?7 C
, T. n1 J$ l$ L3 |
移位法在去年过金山和瑞星,还有江民都是可以过的,
; |+ z, Y1 I1 w2 S2 m; D( M
/ t) ` _% ^* W3 D, ^
现在的杀软智能化了,移位么?呵呵 ,追杀你。
) G5 A0 X$ _! }4 S# ?# U, M4 Z
+ P0 V5 A! t+ A: m7 y7 t$ }
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
- i& P5 x2 [- j0 c
& B/ B; s6 q5 E, Q, h) K' }
二,重建输入表
. G4 o2 V2 F3 \8 d
& `0 _3 U; K. m2 x( X& w; u5 P0 H
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
7 S1 M8 X# b% [
* c- E( y2 X3 @' f- \ k! e
这里我介绍下,
$ @5 r @. `! J2 |0 w
. D+ V h# [& q; x9 P
用到工具:
: Q% M6 x/ l0 p8 }7 \
importrec1.6
0 M6 k' x( M& _4 }) _
od
$ S( u8 n7 M8 D& c
c32asm
* O# H$ ]) b, K+ a# D( r
loaderpe
& o, P" [+ y# ]0 u$ L$ _0 K- k& u8 a* o
这里我们简单的介绍下,如何重建输入表
0 A' c2 j2 n& J. ]
5 C' x- D% v2 H% }3 D
首先吧文件拖入od,打开inportrec1.6
* ?2 M. Y6 V: h' B; K. K
- n/ ?/ T6 ^2 d8 A2 M; e( B9 B
如图 选择拖入od的程序,
/ C' b, g0 @% t: w+ Y
) R) n3 y8 e- {2 t8 h
7 U3 o! \- d0 n1 t5 v- \
这个时候,我们打开loaderpe,
! ?! \0 L: r1 A' A3 t+ t
! Y7 ]. U2 g5 j7 | }3 ^% H
拖入我们的木马
3 ?6 a; S. T0 \2 b6 P$ q7 U G
+ P& s" u6 [+ c1 g) p3 u
选择目录,
1 e/ c) g4 z' G9 W( J; {
9 V: E/ e# S3 C1 V1 Y" x
我们看到导入表这里。。。
& k: X: o$ R! ]; D% _( H9 q
V) I0 B( |9 {5 F3 N" k
如图:
+ ]4 f, w0 ]3 m; ~' Z% O
5 x( B; Q: @" {. X& }3 |
5 M& f* D7 H& ?, O& ^3 [* n% V
RVA地址是0001D000 大小是0000154C
# I4 C0 m3 ^) Y$ S3 b! C! H
' W* [; [- n( \% \
好的,我们把这两个输入到import1.6里去
e% V2 l0 K( `1 Y+ O; j7 @4 N6 \$ A
1 a8 i& n8 |6 j9 i ?
就是在“加载树文件”那上面一点
8 R6 f. \! |& }
c: S+ K' M* s6 w+ \" m
输入RVA的地址和大小。
' X$ Y0 U4 x8 r* e% ~% {' T
3 i# x5 X+ E$ ?& {% ]$ W
点击“获得输入表”
' ~' P2 C1 d9 i, M" v
' ^3 ]: m! o! Y. ?6 }! {
然后点击“显示无效的”
v2 b/ H/ U4 W! K# a3 @- u
- w; a/ X: e" N1 Q+ ?6 o2 A
接着importrec会自动列出
. Z2 E8 w* [0 ^6 m2 l, B) q1 r7 Q! Z
1 b1 @9 @1 R# `
我们把深蓝色的字体 右键 剪切无效的指针
% W8 T* P* I( q3 }8 d& s- y, y- G
. }+ k' [" `+ M" _2 \, D
( [( ?! i8 g' ?/ }2 g3 y
最后,我们点“修理dump”
; t. D' t8 l( b, A1 I8 h$ f
( v; _1 M4 D$ z7 n0 `
选中我们的木马就可以了
# B8 f1 P: Y z/ n
! f" a& s N& G3 B3 U
最后我们要用到c32asm
/ m/ H9 K- k7 F1 V( o
- @8 ~% Y% M/ U+ f* [
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
( M4 V- t/ ]; `6 R7 Y1 |
! b$ b3 I. t2 ]" c, Y' z; c3 H
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
) c Q3 t: s; O
& K4 f2 ]6 j$ J7 `! @
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
, p; l5 y; b# B* K4 h- c
' n7 M. x$ E6 G2 y
我们把马子拖入od的以后,打开了importrec1.6
; j1 g' }1 P q& d
# y, b/ H) M* {
在选项那里,选择根据序数建造输入表和创建新的IAT
0 N( p/ f1 I' R0 r, u8 ~5 A
# }5 B3 J P& V& S: O/ |; \
如图
: b( @, U4 x3 o1 ]0 S
; O. ]% [& o6 C* a
1 S3 E6 U1 n! |& B! u$ x7 ?2 {
以后的步骤照上面的方法继续就可以了
1 A9 z4 _: z5 ^1 _
9 O0 F) \: q5 R5 m3 Y7 e, d8 Z* L1 D
不过此方法有个弊端就是,如果你在sp3下作的免杀 生成的服务端会在sp2的系统下运行不了
, `/ }4 h: q; g4 T. V
9 j* H& N) V0 w V% I% p9 e, k
因为kernel32.dll的大小不一样。
( A3 R: ~. r. e6 k+ ]
0 ?7 f2 Z7 x; \7 ~! V. G9 j
3.修改originalfirstthunk
$ j* q6 S; n0 \+ c+ U
1 ?& S6 U- u; i. f, m/ H' U( k
如图所示
# }/ n# q. G* ~% e
/ O8 d3 R* U+ a/ U L
0 e& Y' e7 z. ]( ~3 j& A1 ~
我们打开loaderpe,依次点 目录--导入表(后面那个横线)
# i' d9 G/ K- X7 R5 M
; s) e" L( C# q0 D
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
% t9 [4 n* D6 l
$ \- B8 c6 j0 S& ?
我们右键--编辑--把函数后两个00修改为FF
i! f& q2 x/ t& J
/ k: U7 n3 L' Z' E( l
这样可以过小红伞查杀。 虽然会出现错误提示
0 G" @% O# x4 T( P: x% w* s5 | \
- h; a. g" P7 a* R6 F$ p+ m- s
但是不影响木马的功能,不影响上线。
. ^4 m, X( `% F( [+ l! q1 h8 r3 Z
1 Z. v& I3 p/ m* D: _. i* o5 S! K
4.dll后面加20 90法过卡巴查杀
& |+ `% u& f9 Z
2 R8 d4 ]) \( R
需要的只是一个c32asm而已,非常简单但却非常有效
[4 f" P1 @6 w" H+ `( P# Q
1 w+ Y# X: Z! S; P+ R& j! U) ~
如图
- l2 {/ Q+ e! t. y
) k# z! q* g+ B7 u' e9 q& h1 U
* i* i" N5 n4 c
! ~8 l8 j. e. p4 W) m
我们可以看到,
0 y2 U2 E/ \9 i x- J" `5 B: N
' A2 L& y* i- V9 B* ?4 r
在ntdll.dll后面有一个空格和一个问号 对应的ascII码是20 90
6 {. ] O, Q4 n; S* Q
4 M' u% C" T4 R& @0 \; R) n
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
c. _- s: W0 B+ G6 Y
% W) }7 Q3 n+ A% F- |
我们只需要在他的所属dll后面加个20 90就可以了
$ J, J( E3 Z1 L; ~2 i1 z
6 e0 Q* o+ [' U& u
卡巴目前还不查杀此免杀方法
: K2 T7 `) Z4 e
/ _! Q! j3 F& |8 ]: N
Y5 }. y7 t2 ?* M, Q
唧唧歪歪这么多,打字有点累了
9 _( l5 X6 t8 ^6 i5 D
2 `$ W9 C5 k T2 F$ A$ F4 s+ p) E8 R
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
8 n% Y+ T. u" b, D' k
* U. K0 G$ {4 |! P5 }
[
本帖最后由 1335csy 于 2009-3-31 11:35 编辑
]
欢迎光临 【3.A.S.T】网络安全爱好者 (http://www.3ast.com/)
Powered by Discuz! 7.2