返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少," \; M1 \# c+ I5 ]( X- j5 ~/ C. l

, B8 v" a4 a/ x' ?特拿来分享给大家。4 p% Q1 m+ ^7 M9 C; W5 Z

9 ?& [* H9 p. u/ u" l今天我们不提我们国产的那些杀软,真的垃圾的要死,7 o9 V1 N. _5 r, H

7 O( Y( W$ F2 R. {+ Q上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
5 Z, }* N; }; D9 B9 ~& P& g, a9 Q. g4 u  i( }
我简单的重建了输入表就把瑞星搞定了,
8 Y" k: ]) T) A, p4 d2 w6 V% P' Q& F$ S/ O: `. I
失去信心了。我曰9 k, l& k, \- |

7 n% Q3 G! Z7 d+ t3 n今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。2 O: @) s: M9 ^, G0 [: m: I
& U5 [9 D! }* {5 {! B, e  ^3 I* m
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。, a3 |8 S/ @( Q/ r1 l8 ~! }  X
/ p0 y# u4 }" S* _* x# I3 d  S
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
$ P% c: }- J9 X4 h* u, s, l8 g2 c4 [
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低6 W% a- s* h- b7 g$ X  D

4 |$ s- }7 V+ h, \过了以后再调到最高,再做免杀。
- L0 h, D0 A9 ^' }, a7 j; _4 S7 x9 v( @7 N$ s; c
以上是废话,
" ^/ Q( k+ q3 E9 |7 j) v5 @6 z3 `1 Z, L/ H# [, G
好了,下面我们来说下常见的免杀输入表方法。
+ d4 O& z/ B' j
, {& J8 r/ U! B1 ~. m* o6 \" G: l一。移位法
6 F5 G  y" p" U5 i% b1 @+ q1 Z: \6 c2 v2 @: `- f8 N# D$ Q3 D
这个已经过时了,我们的国产杀软及时的跟上了时代,
, ]0 V) T( q8 U9 F) W9 Z
( Q/ V6 ~- a9 V. A7 o移位法在去年过金山和瑞星,还有江民都是可以过的,
' T4 B8 I- W8 m6 Q5 J/ F) p
: f' A2 H7 x' W# {, x  M! Z现在的杀软智能化了,移位么?呵呵 ,追杀你。
) s2 S, r2 V1 U2 ~9 I
9 C# ?/ @1 _, Z* I& a  Z如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
. g4 O0 ^0 Y, x) j! N* L% K% p: C% u3 R* y. I( e
二,重建输入表
( ?! M* p; b7 s+ W* s# u3 d6 l
7 C: j9 `) f: |5 i% z; v效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
1 A4 w! i1 K6 ], l1 A# p( d9 ~0 D, t/ {) J8 Y
这里我介绍下,
# l. ~6 K. s2 f1 D% Z8 C* I+ p8 v) Z; o5 _( |
用到工具:, b" E" Z- H6 h) g' I
importrec1.6
* b0 E9 A) d/ k3 B! z4 F$ y4 Zod+ C9 K: x- a7 M& g  B
c32asm
# M! \4 b" J9 a7 u4 a. U8 Q0 }loaderpe
2 i' H4 E3 @6 \* g+ I# C# t这里我们简单的介绍下,如何重建输入表5 |) z7 U( K3 q6 T: `8 Q, S4 U1 W( I
2 D. ?& f  W0 A4 M
首先吧文件拖入od,打开inportrec1.6
% @$ D! L3 N3 k- m& G2 r0 c4 c" G: ?& Y" t2 w( q: I" z
如图 选择拖入od的程序,
9 D1 k4 n$ i# n0 f$ `8 X; O- @# R% P  Y: T4 _& W: I' o: M: g2 a

7 U/ L: |  f7 g7 n$ }这个时候,我们打开loaderpe,7 H1 u# Y$ f) I8 U7 r  J: S9 r, A
# h& K! N, l, \* a7 o4 g# ]
拖入我们的木马5 t; a! N+ h3 h( E

" i$ M$ }6 d  H选择目录,( u8 ^- p: ~7 w# n% a2 t4 @

, G! ^- k% K0 \# o. O, W* \我们看到导入表这里。。。
7 c. `+ W8 ?) V. s4 q9 I! B- n
/ `. F! M' X& P# r: }5 Q& W如图:
: x2 J9 m* d! x# v
# ^* J) v$ F) `
- D9 O: Z) A) r  qRVA地址是0001D000  大小是0000154C0 Y3 p5 s3 X* H  `

& c3 s& u& q( K( R9 f; r好的,我们把这两个输入到import1.6里去
) X& |- \( C4 Z/ W4 ^- I" N( ^6 U
) ^- I7 b" B# ^) ^就是在“加载树文件”那上面一点
( b( M0 t2 {- b/ h" A7 R$ U1 }, n- m) n1 e9 j& g  a
输入RVA的地址和大小。+ ]; s" q0 H9 s+ C! q, d
7 [+ [0 E6 G! ?
点击“获得输入表”
+ h3 C* G; p1 S, @. z2 Q, Z; s$ L# p- V/ ~
然后点击“显示无效的”
  v' P$ x8 G% F) ]* Y% \
" ]3 I: M3 o. ^2 H/ e: J% Z接着importrec会自动列出8 L3 ^" n" A. j2 e
1 h. |! |% n" j& L- |: }
我们把深蓝色的字体  右键   剪切无效的指针# I& U0 Z0 U0 o- M1 D

$ g, e$ B+ I7 u
2 H. ~7 a& F& g, L1 B" L- ?最后,我们点“修理dump”  t* x% C4 T8 H1 R) c9 s  D
$ v% E% Z; V6 m/ g/ }4 e! {) Y
选中我们的木马就可以了# R0 J% |: X+ r
$ H8 \1 Z: ^: ~4 }* t
最后我们要用到c32asm
4 e8 x; a( d* |1 X' m
+ ]7 F* B9 t" {# |; H我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。: b' x" C, P% r- ], [$ q/ a* f* n

: S% G$ [5 K* @# i( r这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
2 `: _  z2 L) @* X
0 G# L7 r, D$ E) |0 t& d这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤," _- J1 D3 J' f+ ?2 u) T

- d! W4 f5 `' B9 `- B我们把马子拖入od的以后,打开了importrec1.6/ l  z+ _3 ~. K/ D: A4 _

( m7 X& G/ ~9 R0 P+ H  z8 S在选项那里,选择根据序数建造输入表和创建新的IAT/ e9 c' ^* H) g

# T3 d) ?: l7 [/ V) n( {如图5 b5 O  L& D/ T$ e  G

* A% x3 u+ [0 |: G# C  p4 d) k
- e. [) Y, d5 n; Q0 z' x* g* b9 F( `, W8 y以后的步骤照上面的方法继续就可以了
. [: d$ F$ d% q
, a- C9 Y2 a( Y/ U5 a不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
; s# V; R$ ^2 E5 l/ |, c" R+ b( o8 m4 x7 x: E& d6 Z
因为kernel32.dll的大小不一样。
' K; l! B8 {8 O( n
) D0 x$ Y7 N$ D: v% G, r3.修改originalfirstthunk
! a! T% F+ W$ B/ A$ e2 T3 e# W7 ?/ k- w  `1 M
如图所示3 T* w& n+ C; n
4 E3 e. }' R  |+ a5 B8 @: d2 |
5 H0 c8 I" l+ T
我们打开loaderpe,依次点  目录--导入表(后面那个横线)4 ~6 ~  i! s( Q0 d4 ]" y7 m* e" V7 g

6 M% r- O) y: \: ?3 _4 x3 D& O我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll& k! }' \# v3 O) [! M( W

0 A1 _. J6 [, ^5 `我们右键--编辑--把函数后两个00修改为FF- Y; X$ ]; h1 n3 ^( D: c
& a- l- R4 G6 e( J, f( f/ U' M
这样可以过小红伞查杀。  虽然会出现错误提示
* b2 E7 g/ |5 c$ t
9 Y' b3 t5 |5 ?* u/ ]5 Y但是不影响木马的功能,不影响上线。) `; y$ T/ n, X% o
1 Y" u- r: S9 O
4.dll后面加20 90法过卡巴查杀
* d7 n, Y! `& p/ k7 O* Q
& Y- U+ J/ |: r6 `9 F! H) K( R需要的只是一个c32asm而已,非常简单但却非常有效# o( A: X# D$ J) s# D. p% b

" E# \0 c/ o" ^& l+ r2 j如图
4 i& |  O* f- k4 O/ k/ n! O! X  W8 l- X% d# B" ~# p- B# a
+ j4 y# M! @) L$ S2 [/ u9 d  M

# c/ U! W; S0 @/ Y9 `我们可以看到,  x2 ~, Q5 k$ Y

  u  T+ \* g4 ?1 j在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
7 I  Y. L) @& e/ \4 ~
6 g' e' }" z+ b# f$ x这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection6 X8 b  j" E2 K. ?0 X5 l

9 X' l, S' i0 r# [( g我们只需要在他的所属dll后面加个20 90就可以了
% z3 g& E$ e: n
3 _; j/ M( F2 i% p+ X) \卡巴目前还不查杀此免杀方法$ ?1 [5 C& n# o3 Q
1 T6 @6 \2 F7 G; P! W6 }. E
+ T8 ]% o+ ^1 g+ i% I
唧唧歪歪这么多,打字有点累了+ |$ \1 p, ~* @9 q8 r. z
4 _: O5 @8 P; w9 o( i
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
9 j/ J9 @& X0 u4 l# Q6 F  C0 Y3 A
: x* v+ X/ h8 P! {8 n[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表