返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
/ X6 r7 s: T3 |
' `' {, a+ n& x; \# {5 Q特拿来分享给大家。
& S5 p, R$ w3 I9 r7 ]
0 D/ n( h4 X3 h1 W4 y, o* Q今天我们不提我们国产的那些杀软,真的垃圾的要死,
  r6 L1 f8 P/ R5 x9 @5 t, n
9 P2 b# H& r1 d* R' z9 R上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表* m; U7 c% p2 L

* U2 g1 w/ h! \$ g6 j4 Z我简单的重建了输入表就把瑞星搞定了,
0 A+ ]) |* ?* k0 ~: [% f8 V
2 D1 m* }9 p' c6 F- `/ J失去信心了。我曰( T7 D! h5 l) M4 x) P8 l$ D

4 B" X7 \# i" h9 v/ c今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。# F3 x- q- `' d  D+ [3 P6 [
5 P- E0 ~7 P2 _
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。+ p0 |" P2 f. M; I" ~* h0 u9 g* H
2 w7 t* m4 a; k+ a; }
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。: j0 }" |' B% b8 n& Q

* U% m' C. ^* L! |4 p  [高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低$ y% x9 O* ?# s
& C1 U( S6 i" {- ?% U2 @( z, q& T
过了以后再调到最高,再做免杀。
0 d3 u# @, P. U) s$ o! j5 K; v
! T( R  `" ~+ g2 N5 \2 q以上是废话,8 j8 G/ }9 S! w4 ]* g- z
# s9 r; `! v% p4 T, J) s
好了,下面我们来说下常见的免杀输入表方法。! G- M  U1 ~1 ], ?4 y* g
% J/ m$ L9 T" B9 U2 Y, k( N
一。移位法
8 f6 ~7 R+ \" i3 Z9 w3 S4 [+ N/ H  g
这个已经过时了,我们的国产杀软及时的跟上了时代,
% `' Q9 p! u5 M$ y, o
$ v* d3 x4 W* |2 H! s移位法在去年过金山和瑞星,还有江民都是可以过的,
) Y& c1 f6 ?6 s6 P* ?" i( F$ _3 [7 j! |  d2 T
现在的杀软智能化了,移位么?呵呵 ,追杀你。
1 z3 {, N' Y$ A* ^1 f
3 E) _7 }& Y$ ^# C) d如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。8 b- C: w* l5 F( ?( z

: O7 V! f! _3 I" v& k% Z二,重建输入表
: D: p6 |! G8 }9 l( X1 V8 v! ]$ i
" ~3 _! V5 {" P+ F" s. s效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
+ t' F7 y6 J" t! k6 L
2 o6 x, E9 D2 m* V" s' k这里我介绍下,; Q' C2 j. G4 x" V- a8 s9 M

3 Y" j2 p* K) l# @; p; P  @" a用到工具:& T* Q! K, y: c; P' _7 c
importrec1.6
" r5 |6 ~2 j6 @: _7 m5 m- J  [+ vod
# A+ L5 N- _( L; m9 R9 i( f. Tc32asm+ K) I7 @- B& k& Q; o
loaderpe8 X+ h  l, W0 G( p5 `
这里我们简单的介绍下,如何重建输入表5 ~: p: x3 X. m) G! t1 q/ c

- a( Z2 E) o$ z/ z7 d$ Z首先吧文件拖入od,打开inportrec1.6+ y4 P+ x' a; b% |/ F
9 Q8 c9 n1 P' p/ e
如图 选择拖入od的程序,3 L: J# {+ D9 c0 ~9 x( |) g
1 G$ g& ~5 ~+ k6 o  K$ b

  F: ~- f/ y4 y7 @% ~7 U这个时候,我们打开loaderpe,
/ G* G! @) A! g' [# Y/ x8 p# [9 {0 i& o' a
拖入我们的木马
+ I6 c/ `7 X! R4 C% c( I+ l
5 L9 b9 y) X3 H0 `! t$ U选择目录,5 g; i' N) T3 ^5 Z* D# B& `
. o. m/ U. V6 y- g4 D4 k
我们看到导入表这里。。。& d" Y3 A( P5 `

+ F5 e2 c' [1 Y* J6 Q9 S如图:' N- J2 W6 y! z9 `' C
; X# B# j2 K# E
6 r4 E+ m. j, }8 T; O% H3 C
RVA地址是0001D000  大小是0000154C) y1 Y+ Z9 r% W: m6 y# I. m
9 O, n: r; K, h: m! `9 F" e
好的,我们把这两个输入到import1.6里去+ q- ~4 d  @( a$ D; E
1 E& `: }/ m/ ?! P% ?5 y
就是在“加载树文件”那上面一点
& e9 B5 \6 r- V7 o6 z& B7 D
( |* o8 C) p2 s输入RVA的地址和大小。, U4 k/ Y9 m6 z+ v5 M& o  D: C

% l2 a- m3 o% w点击“获得输入表”
* p( n, s; `+ W9 O' \' V
( Q1 G! v5 N, I9 c- u然后点击“显示无效的”+ A( T1 ]$ U1 N4 v
* Y& O8 w% u5 m% R! R) `. l
接着importrec会自动列出
' O5 j' S! P6 h2 I
: v( V; n' @1 I; I我们把深蓝色的字体  右键   剪切无效的指针
+ m9 ]5 Q$ s! X3 ~. Y; o  \6 J; M0 U
% @4 U7 R3 w  l' A1 K
最后,我们点“修理dump”
0 Z/ i/ D4 u9 C
' y* b& X( a; `2 ]# Z选中我们的木马就可以了) p8 l( J7 z" s+ M

8 Y) U9 v8 o( }9 i最后我们要用到c32asm
) A3 ^# S! S+ ~6 V1 T" M" Z
0 O( b! R9 R  K7 p' r1 X我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。- x' f2 l+ t: H
. n& L) o1 \3 C' \" r
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)5 ^2 X; r3 B2 O5 S: X3 z5 c
$ ]( V. E9 f/ l1 G. r! s
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,8 R% T! ^1 ?+ `

: D3 t! T" F# w* v5 w: Z( E! m9 A我们把马子拖入od的以后,打开了importrec1.6' w9 ^2 e: F3 z* v1 _, f* K7 n

$ U! L$ v" ~' u! `& V0 k在选项那里,选择根据序数建造输入表和创建新的IAT
* V1 x3 N( r% ?7 N* {* j
9 {# G4 W& r0 Q+ D0 d% W- Y如图. j$ T2 f) x% M+ j
6 b9 G2 d& Q, V( |

/ P3 o7 a) X; {4 I( L以后的步骤照上面的方法继续就可以了
# V- T6 A2 G8 t; @$ F/ r: d. t  \& ~5 P# ^# k! m7 T* x, N* S
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
$ O0 d) J* \& x2 N$ Z5 I" V- p: r2 n% C( u3 z% s8 E* K
因为kernel32.dll的大小不一样。; J: G6 V2 _: w
6 M- j+ p- t' O. M4 t8 E
3.修改originalfirstthunk
) ?- x, v3 W6 p$ [8 _: E8 ~1 c) @
+ v8 D6 ~8 y; d0 K" q8 F& s5 S, A如图所示
# U+ j$ g& J( \: X- E; l( O/ U8 L1 j& z
: k; Q; [! i7 v7 P
我们打开loaderpe,依次点  目录--导入表(后面那个横线)9 I7 q/ a! N# Y9 O& L

6 G6 @4 T4 u$ c8 d; a我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll6 ~& j1 U+ J# }4 G0 y: B
: i: ]$ R5 E- H2 W+ x: f) g* f
我们右键--编辑--把函数后两个00修改为FF
- c8 L: d- Q0 g% P( M$ h9 c' C+ w( h- I; y1 f! {
这样可以过小红伞查杀。  虽然会出现错误提示" L) V! x  t/ N- w
: F( U- V& ]: ]: b4 _. R
但是不影响木马的功能,不影响上线。5 k, D8 I. L* U& l  P$ R

/ F6 ~' p* L# Y* o+ i4.dll后面加20 90法过卡巴查杀2 n& ]  \$ T9 m1 ^* r7 \4 {" d

1 ?6 S4 M/ b0 Z; k! M! M( [9 S# A需要的只是一个c32asm而已,非常简单但却非常有效% N2 B- f: O1 u) n
0 ]5 {* r. [1 h$ ~- A
如图
- s# h, E* Y) X0 F* J/ {5 }1 P1 ]3 H& A' y+ J( \- w
7 L! u. |1 m' o4 Q7 z3 H0 w! `, i

0 \: E% K8 y: W. L4 G1 c$ y我们可以看到,
4 {1 e$ v5 z# T" h& c7 V+ _: T2 v. @7 q2 E4 T4 y; \6 l- V
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
- \6 p% P6 g) N; o
0 C; X6 b9 B& }+ j# m5 R  f+ Y4 Q这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
7 a$ M! C. m$ C% y
( h/ N# [) G5 J7 A我们只需要在他的所属dll后面加个20 90就可以了
& d/ _- u8 e* d+ R; W) i) G
  g+ x7 _) |( a! f卡巴目前还不查杀此免杀方法9 a* ~  P) _2 Z; F! e3 i1 G

" ^. C% Y. B7 I$ N
5 J( R8 Q. Q7 j0 ~1 T3 K- u唧唧歪歪这么多,打字有点累了
' e  M# Y+ v; L  R" f
2 ~: H# t! |  D' }以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
: V2 ^& U/ @4 f. E0 |7 h( F+ P7 h$ Z! v$ \/ ^$ z
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表