返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
- J+ p0 H8 @. l& ~3 G- w
, |3 j4 L1 G% I, L# B1 @* V6 h) J特拿来分享给大家。' C7 W! E$ d7 I7 c$ D

. O' u. r- f: _% L3 @  k$ A8 b今天我们不提我们国产的那些杀软,真的垃圾的要死,
2 r" A% x  N* ~6 G6 J7 M% s1 E; f- Z3 ~6 f- @$ y1 X
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
8 J# Y* m  P) u+ g
+ P; y4 E% ^- @" ~* P/ h# |我简单的重建了输入表就把瑞星搞定了,
9 M, v+ T# j3 |6 l& Z  Z" U
1 Y6 |; o: t; o; w! q失去信心了。我曰  j7 L5 E, D- O; q' v1 y
7 V" t# C8 ?* ]" P# R8 b5 a
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。" }/ p/ i; ^) T: S( F6 P
5 v+ I2 V. n" Y5 x& u, N
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。+ F" V' |8 K3 }( J

! [& G- o1 R. S5 h7 f* ~# |& {8 E2 A外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
1 c$ D# C& Y4 n' [9 p# G
$ |) ^. w$ x6 P! z高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低' V6 d. [. L7 f$ e% ?: ]( n+ F
5 p& c7 D! N9 I8 o/ W1 z) {/ W
过了以后再调到最高,再做免杀。1 Q; Q+ A2 L5 d- g- M( H; G3 u3 j$ ^
& M+ B8 B2 U8 s( t9 G& c4 t
以上是废话,2 s, g$ X0 @! Q, H! n5 Y) L% w1 g; o7 G

4 X& x6 g# ^& i3 y$ H好了,下面我们来说下常见的免杀输入表方法。
; t' ?; {$ S" q8 E0 W4 i* `3 d) D" j& M* O7 h- `( C  C7 s
一。移位法
! h1 u- x8 \: e, c8 x/ p
( B) L8 C; ?! I7 C6 L& h0 u这个已经过时了,我们的国产杀软及时的跟上了时代,' T# J) n, x  z4 M4 f

7 F+ g! D$ S, A: G移位法在去年过金山和瑞星,还有江民都是可以过的,
, W: V  I8 `+ V) G
$ B* G' [& x# H现在的杀软智能化了,移位么?呵呵 ,追杀你。+ e7 _5 F& K! R8 r% `6 l; W% L, y. I

" e( f1 t  a( t* @2 ^如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。8 h2 L8 n! X+ x) W7 |( m' `

( |7 u2 r! n4 v5 B- Z二,重建输入表( s: t5 T2 Z7 o* Y% w% E# w3 {; Z# |

: n: P& n. d# V效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈: D/ s. {2 L# ^7 ?, @* s
2 o3 z7 ~! j# p3 {' d
这里我介绍下,
8 a! h% W  o( C6 j) A$ c7 V& l' ^8 g* R1 E9 d
用到工具:
/ a# s, q/ [/ J! }7 w9 gimportrec1.6
+ [9 {( Q9 k+ \. Kod
9 m6 O3 S  }$ c! ec32asm
5 T2 C* [* _4 a; I/ ^- m% jloaderpe! w7 d' P2 M+ [% h, k) [8 ~2 h+ A
这里我们简单的介绍下,如何重建输入表/ y- L* @& V2 y9 c0 X1 `2 b

. k. B; y. G2 W2 c( Q首先吧文件拖入od,打开inportrec1.6  i  D) n. z8 N. ?, B5 Y
8 x' ]4 v' a2 W+ `: d, _: U% s
如图 选择拖入od的程序,
& l2 `/ z& A% [, L9 w$ ?; z7 Z" B% e" T
' P6 z8 E" U! l5 G6 ~) U0 `$ u
这个时候,我们打开loaderpe,
) ]8 d6 o( \8 ~" n6 ?4 ?2 O1 u
7 e1 x. N! `1 k% R3 n' [* U* A2 p: c/ f' i拖入我们的木马
" {* \4 A. U- o# s/ y) @( a2 C
- i2 v: s& c# q( |, y( G; E$ h; j选择目录,
6 q0 K. R+ a* x$ e
  f7 g4 o" V! }2 k) |8 \我们看到导入表这里。。。9 D7 z6 f+ }' m
6 z  T2 N- a8 O/ X5 M$ p; N
如图:
5 o- p. ?5 {9 y! |2 Z" p9 A
- @( o  H+ f# v, `# @, t( B! P$ |7 W5 r& D7 X; Y5 {# Y/ c4 }( e: ?& J
RVA地址是0001D000  大小是0000154C- r, \, i) B3 ~) e/ J0 U

% L& Y( o' }& u6 f" D好的,我们把这两个输入到import1.6里去( u$ v. H; K0 `& l& x, R

0 h2 @2 x# s9 ?  X' H8 s4 h. `; Z就是在“加载树文件”那上面一点 5 s5 }1 @2 \/ P7 J) `
  w8 [1 B, ^: L$ k- {9 ~7 Y
输入RVA的地址和大小。
& G8 B! ]- J, ^1 ?7 }6 k( x3 k
6 z3 ~4 c9 t) V7 w8 C+ B点击“获得输入表”
8 r6 ~' [* g) ?' K" g$ ~" B! D' k  }  h
然后点击“显示无效的”
' Y( i1 _- m, G; Y# @' S: a
5 V. B$ m$ R, s7 M3 M0 W" M接着importrec会自动列出5 X( ~* q8 @! ]. k

( P0 Z8 G/ m: k! L' F我们把深蓝色的字体  右键   剪切无效的指针
* K# a% K$ O6 O1 S
$ @3 B- r) p6 n" T! g% O$ s9 `' i1 [
( N* @- a/ j; R+ E& x. I  }' F最后,我们点“修理dump”
1 K5 q; q$ J# K) H' n; V6 h, e2 h# O5 t
选中我们的木马就可以了
( w; l* V/ E( X' p3 k- P) V
) K  b2 [* t- q7 b+ p! ^! j* ~最后我们要用到c32asm
/ J: g+ ?. a* \7 G& f3 @5 e  i+ k% `
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。. i, T1 d' q( W3 ?6 v# L# N9 h

% k- e6 d7 ~" m% B2 p( U这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)  ?: N6 [- `4 b3 U; G
2 p- t" d$ }$ Z2 q4 O* _
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
3 g& T$ b8 k4 h& b- z; o0 H
$ n, b! L9 b* f9 W7 }7 b0 S: w我们把马子拖入od的以后,打开了importrec1.6
. D2 H; e, U: i3 o* n7 k/ q  I9 L- ^* e. b" r5 v) q$ Y* o! V9 J. ^
在选项那里,选择根据序数建造输入表和创建新的IAT
& q0 G7 c' @9 [. V) h8 v) l( b' ]5 d1 N9 z, |" {
如图
; R$ }4 P, H; u/ n/ u6 p+ ^/ G6 H3 r4 Y  k, {( z, y
/ J; ~2 B  G% x* C, N5 k& l3 O
以后的步骤照上面的方法继续就可以了4 ^% x* J- [, C* q) a$ _$ H

* H" L4 Q- w! _) J5 |1 ?+ C不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
& }9 i  ~7 K, r' o0 D8 C- M, I/ n
因为kernel32.dll的大小不一样。0 v+ @8 S, K6 H6 n3 n9 Z! q( {. U
5 `/ S% c8 a: Q# W
3.修改originalfirstthunk
" O  ]) t7 j* ~9 T! ^6 B
! }/ g, K  k$ ]5 [如图所示
4 H$ N% V: F$ n+ X$ Y2 P8 M) {  |4 }' {  [
# c! w4 N& d$ j
我们打开loaderpe,依次点  目录--导入表(后面那个横线)2 s2 W0 O* V; d4 T' {  Q
% b: B( F; {- t6 z
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll  n4 ~3 l5 `# j5 Z+ e& W4 _! Z6 h
2 H0 G; Y& M9 q8 o( ?7 l
我们右键--编辑--把函数后两个00修改为FF. a: C( w( i0 d' Z8 v+ S& x- ~

" w/ Q* [# b/ s# j  E( O这样可以过小红伞查杀。  虽然会出现错误提示  E- U" B  s) ?" {) b/ m$ }

6 n/ T# \1 w9 ?+ g8 [7 j; u但是不影响木马的功能,不影响上线。
9 j+ r  d# F+ z1 L, C6 n
  {& c- b* x7 r4.dll后面加20 90法过卡巴查杀
9 [1 `; q, n: h# Y6 e; r; H' Q% W8 E) l' \) u
需要的只是一个c32asm而已,非常简单但却非常有效
) Y+ r0 Z0 F% E5 G! }; d: e8 x1 ]' e# n" u
如图, o( G/ h/ O8 N1 V( P% F4 [/ y8 U+ l* U

" @7 G8 C. s) J4 c! H$ O' E. C& V: C, N1 S
8 i  r2 G/ v5 `- `
我们可以看到,/ X) @  [8 ^  {2 O
7 b+ G8 {; K* I$ ~, y9 D7 u
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
: W. @7 s0 P9 V5 f% _
0 ^2 {) Z. H$ ]7 ^6 v. Q' L这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection- K% w7 |7 b% x) i7 X4 l/ t+ G
, B0 C2 N6 G3 y3 r, r4 ]
我们只需要在他的所属dll后面加个20 90就可以了
6 I# m. H, n% [: v0 f% k' _! M* ?! s. g- v0 {. f
卡巴目前还不查杀此免杀方法3 a& j; A' W- X9 E7 h$ p' L
. K6 h5 [* m# f9 W2 M
  O& q' H0 k& @; \% `! [% o
唧唧歪歪这么多,打字有点累了) K/ f; v5 E% a% h7 l/ i6 T
( M. I' R8 N' R- l& B2 [  _+ _
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。3 _3 p  A" p* D

. ^* I% N- S0 `4 A3 y3 `[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表