返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,) Y% T' ^% L: {

3 F9 O' S3 l2 v8 Q5 _特拿来分享给大家。! J0 U/ b% @: }) L
: l4 Z$ @. A. t9 k* l, }$ T
今天我们不提我们国产的那些杀软,真的垃圾的要死,
3 t& r1 D& V' C3 F8 `  P
) ]$ Z6 A% x( g2 R; E% b上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表" l: f: f, O- N( F1 w

+ j: w8 s* t: U# g* e- S" c) O我简单的重建了输入表就把瑞星搞定了,4 {" h* M' N+ E0 k. i, j6 G

5 @0 c2 X7 ?4 J; u失去信心了。我曰2 ^& w& Y% ^( E* ?0 n+ M/ ]; h

+ W/ z# \$ I/ m, s今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。* C" a. V- b1 F% f& {; q

& g0 J: K, K$ {% F' V  k; f首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。8 S9 W2 d7 a6 W

+ v* h+ D& L4 ?: I外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。! A' g& u4 y0 g% }# A
/ M* \* b, ^8 F; v4 z: C
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低0 d+ ~# p& |  x

; P$ a  h' Y. q/ ~- i, Q9 F  \! }, ~3 O过了以后再调到最高,再做免杀。' U3 ^7 u: O7 m& c  j! o6 G

6 d3 e3 J5 P4 t' m以上是废话,' K4 J% Q0 Q' u. T1 \6 _. `+ x
) p9 }. ~# c6 ?2 m& i' k, `9 q- N
好了,下面我们来说下常见的免杀输入表方法。
2 ?# S( ]+ k+ q0 |* a
5 L2 h6 m: l( b: E! I3 w5 h一。移位法; J" R0 s" }' B# z
  m7 w/ Y5 O9 e0 O& Q4 v2 w
这个已经过时了,我们的国产杀软及时的跟上了时代,  U+ d9 L5 A0 t
0 s$ _$ `. S# ^% ]9 l, B+ f
移位法在去年过金山和瑞星,还有江民都是可以过的,
) k5 S  c, m  c# {
( E2 {2 |7 M6 v1 O0 G( K现在的杀软智能化了,移位么?呵呵 ,追杀你。
  X. ^/ `3 W5 x  N" B+ A
9 ~5 a0 U" Y) \8 K+ O如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。1 k6 f, a. ?8 L/ \9 F+ ]; F5 ]7 Y9 J

+ k, j: R2 s' G2 [二,重建输入表) P2 n4 M" G7 G+ N

- _; F, ?6 B" W3 A# o效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
/ @# B( |. b: D
4 _& Y9 z' y- o# k. @9 H9 b; Y  P& `) P这里我介绍下,
" t7 A+ T) ]0 C' `
5 k* D6 P- a+ b. _7 a用到工具:+ e' t) V$ X2 j( p* P
importrec1.64 c1 P2 @" a, q; ]
od6 W+ {7 s8 E$ D0 E6 H$ |8 u
c32asm
, \, L7 }, }5 Xloaderpe/ }0 @* T& l) }6 ]5 V& t
这里我们简单的介绍下,如何重建输入表; V$ M" v6 S$ d7 ^
( s2 X4 t9 f! I8 z
首先吧文件拖入od,打开inportrec1.6
$ J1 H. S0 P+ c" ], k1 ?( `- a. A; f5 p. S1 ?9 h
如图 选择拖入od的程序,
1 @* u4 F% j0 }% ?# l$ e3 f0 K
4 g. S  z9 ^" p$ M
6 Z  V/ C% b- _" N' p" L这个时候,我们打开loaderpe,: y) r& i( M& q& K

+ A' D* f  V& U4 G( v& E# {% K& `拖入我们的木马6 C2 G8 l; q) H

4 L! B& W8 m0 [& A选择目录," ?+ O/ w) q. [! c  q- w0 j2 \

- s7 q1 _; n, X/ {7 G我们看到导入表这里。。。
( M- K$ j3 y! K8 M# q7 [7 e; o' v: Q: `2 x5 z
如图:
! U5 g  r8 i$ C$ i6 M* O/ I4 f  w9 L$ w: [7 E  F- f* p# C( V

# Q/ b6 O% V% k3 l* k. E5 U' WRVA地址是0001D000  大小是0000154C1 ~, r3 ?) _( O6 H$ y1 ?- p. w7 k

7 R/ G% R7 k: S好的,我们把这两个输入到import1.6里去1 P5 p) I; t+ b6 c) E5 b
! {8 e! f! e4 \! X' K# R9 y' l
就是在“加载树文件”那上面一点
/ z8 ~* V# B3 G3 B4 y$ p0 C$ v! E3 w2 |
输入RVA的地址和大小。8 P2 K. A( N8 D

5 `& O" I5 @$ X点击“获得输入表”
- X" \; N! f' f, C% p/ F9 O- w4 e& S! U6 ]" q
然后点击“显示无效的”
8 j  ~! p4 Y. Z% l" l) `: W, [" E% v! G6 p) q1 t' J
接着importrec会自动列出/ w. T3 P3 r% s
/ j0 ?/ m' Z* j) ], x4 S# \0 R+ G
我们把深蓝色的字体  右键   剪切无效的指针
! L* W, d! _! J  c, _( }6 E' B. f# t& e- `  i  g. n
# b& A# [: U2 E
最后,我们点“修理dump”
9 T5 V% \1 ?7 C+ n/ h! x9 n8 T
. W9 Z6 R0 ~8 y2 w选中我们的木马就可以了; [$ o& k+ S# l3 h; ^: `

; G+ g5 |- Q" c4 f$ Z: G& C最后我们要用到c32asm& L2 N: W: }1 D5 G5 A
2 w/ M9 r3 Z) |
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。$ W% J6 ^3 x2 F/ Q4 x: i) m+ p8 g
. k" w  n3 l- ?
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
+ b- f+ _+ F+ l) s! b' ~- m9 X" n
% P) D+ W) |7 S% A- A这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
2 \' x/ z- s% F/ C
( ^  a9 z& ^! b& |2 a( Y8 ?* i我们把马子拖入od的以后,打开了importrec1.6; K, |% i5 S' v) R% b3 \
5 n0 r0 b# }9 o1 g0 p% e
在选项那里,选择根据序数建造输入表和创建新的IAT
! H6 N5 @/ M- H& r1 E& ~5 c# D( V& o8 t' K  f1 o9 Q9 `
如图
0 x+ j7 q, L, u8 ]3 W$ e+ v$ H& Q8 K: X+ K
/ \7 k2 {1 Z5 H* q
以后的步骤照上面的方法继续就可以了; Z/ M6 V% `2 Q# P8 S$ R
/ E+ d! A9 A* v8 r) Y
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了1 f0 j" F0 I1 j* k, M' z$ v
' e4 l4 c$ n; x# E! b7 Z
因为kernel32.dll的大小不一样。8 E# o( M$ E8 ~1 y6 U% u. B

+ @( e* M8 g. ?1 ^; [3.修改originalfirstthunk2 z; m3 @3 ~/ j- R5 I' }. Q, N

5 h& R2 d( b6 C' Y. C" N% [如图所示
& ~! O* i) w5 K1 S9 G4 B
# q$ K, ]- Z" M0 t2 P
6 U5 \* N, l: v5 F5 Q$ z) w# S& ^我们打开loaderpe,依次点  目录--导入表(后面那个横线)# }# F8 {! |' o. ^$ V) N: Z

; U8 D) M- R4 [0 q5 Y我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
7 h3 \/ x. r: B- }7 m
+ Q4 A/ T2 ~" [1 m: t; Q我们右键--编辑--把函数后两个00修改为FF3 I$ ]/ E( O) d$ s! Y0 v; a7 F2 v3 N

7 [' O/ F3 S6 I- n  a这样可以过小红伞查杀。  虽然会出现错误提示
" e5 _+ J- T2 I' {9 p. l5 m
# p0 F2 s! @2 H5 \! T但是不影响木马的功能,不影响上线。/ a7 y! G. P' r' l* M
2 n5 \" ^: {& d$ V
4.dll后面加20 90法过卡巴查杀8 @) u" l4 x! a" ^
2 R" N7 I! f: r  _) \. h
需要的只是一个c32asm而已,非常简单但却非常有效
2 u# ]& c+ V# V6 o9 \6 `( W
9 l$ ~! K) w( I/ @' f如图& o* s  z0 e7 X

: E: L$ Q! L: k- Y' _
# B& h' B6 J( F! @( e) D% y
9 h4 s" @+ m7 o8 i" z我们可以看到,
1 b& x( H. q* P- r
' v" K2 q# \' ]0 @4 L/ A3 B$ N, _在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
) i3 b) w" c3 ^; g$ j0 f- D0 d  n2 Q' Z3 K& {
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection! ]! h& ~1 Z2 l: _+ k4 ^

0 L( {3 e, \, X$ J. L* _我们只需要在他的所属dll后面加个20 90就可以了( O6 N* c0 B, F% p

- }: I% K0 ~: y- z% W卡巴目前还不查杀此免杀方法$ H) Q- @0 u$ y- |  x
7 m0 ]6 z9 Z+ Y* v6 i& t8 V
! }& |. S0 J  I! P* }! a3 Y
唧唧歪歪这么多,打字有点累了
' h5 q3 E% R% b2 b# k1 g* r/ K2 q0 x4 S: \; d# d
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
6 e$ p& U+ V8 L1 w6 D% b. y. R7 ^
1 W$ {$ ~1 a) e- T2 Q[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表