返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,$ h+ \- f% P; k0 |, e( m8 T6 u( q

2 {" K" ?( l* C& \0 {4 x6 i特拿来分享给大家。9 B0 F% N% X7 r

$ y) x; O/ J( A: a今天我们不提我们国产的那些杀软,真的垃圾的要死,
9 L( X$ U9 D  ^  b
5 `3 w5 o2 h4 b  c上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表- R4 k( s. E4 y  t! U' _

! a% F$ z+ o8 f" b+ H我简单的重建了输入表就把瑞星搞定了,
# k+ V# m1 a6 E1 w: ~/ Z' K. @" ~7 B7 @( M  ^3 ^8 K
失去信心了。我曰' a, s) Q; n* b! K8 y* ]

2 }8 O. ?; O) G3 F今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
; H$ ~# U1 Y$ t6 _
& X9 O! h4 X) l+ p6 i; v. W3 b首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。5 L0 ]7 K4 |9 v8 p/ [7 Z5 [
" {' {# [; T4 U. H. z
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。  E$ k0 p$ F8 W8 d: x- K

- C$ G  `) b  f% f高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
% I5 C; H4 d2 v- S* Z
. A, m% V! U  V$ J( D( m3 x* }过了以后再调到最高,再做免杀。
9 S/ |! \) U# W" E- Y/ G0 H, X1 y" M* j9 T4 e* t/ `5 M" Y6 L
以上是废话,
* V- d( U, {/ J2 ~" G" o: S* X( R1 c+ M; n/ E, ?+ \
好了,下面我们来说下常见的免杀输入表方法。0 t  y* p; t. r7 J0 f

& i* ~" |6 ]. C9 i( l$ k5 a7 Q; m一。移位法- ]& _" Q3 x& c$ M. Z- [6 X  L

# D' v+ W5 m4 |4 m这个已经过时了,我们的国产杀软及时的跟上了时代,
  Q. f. n! u8 L9 |3 @, W$ {
& v3 {" m- W; ~) h移位法在去年过金山和瑞星,还有江民都是可以过的,# `8 G  j9 r4 r! b1 s, r) B3 I

0 q0 x1 W6 W% ?现在的杀软智能化了,移位么?呵呵 ,追杀你。# k! h  S: p4 C3 i2 b3 L

6 ?- ]8 B& V6 I5 n0 e8 W7 J+ `如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。, {- ?" Y7 k, z' [' k
: A6 ]1 z* L( q! d
二,重建输入表
: z' {1 }, M7 L" e4 n2 ~2 e/ b1 A6 C4 M* ]4 a" P
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈- n2 G, d! J$ t, K

3 Z+ b- o% h5 d2 ?/ j4 t这里我介绍下,8 r" I- Z& B' p0 D" T6 [: L% {

/ E" r* b) R2 a- x用到工具:1 R! P3 w3 F, m* Q% Q! r* d1 I
importrec1.6
' ?2 Q4 a, F5 |od) c. u; }# V, O) h
c32asm' q+ b; V, x  O
loaderpe
5 ^' C6 e1 j" N这里我们简单的介绍下,如何重建输入表3 F' y! i8 ~. N; e* ^
8 G" X! M& ]& s# c( C. L
首先吧文件拖入od,打开inportrec1.6( l1 q( h# r3 i9 z
! ~2 a+ j; A/ ]* _
如图 选择拖入od的程序,1 F  Y. s/ y( B

4 f) I; E. r0 |  z0 E% J
9 D0 ]; U9 D" Y  g+ G* g这个时候,我们打开loaderpe,
4 i2 |; J- Y+ x* w$ r' X$ w0 g. Z, p2 ^) z
拖入我们的木马- F* R& K$ x2 _' w$ r4 J& p

6 K/ q$ _  N8 b; {" ~选择目录,2 m; B' |; c6 O4 R+ m% a
" s  D- `; H/ ~9 J; w
我们看到导入表这里。。。( R- `2 V6 k3 h% l( V( ?
/ k( j9 }# Z; {' U. h9 _% \
如图:7 v6 k, e: X: f5 W& R% [% B' y
. B1 F' q1 f+ H

( w1 E: F) r" J$ ~( h5 u. G0 o( `- j$ HRVA地址是0001D000  大小是0000154C
# g! a& x( x& L" Y7 L1 e6 I, W7 S+ k. W# o0 z& C  G: R8 U* t/ C
好的,我们把这两个输入到import1.6里去
8 }% c) G* H) \9 f4 q1 O5 E' i6 f  f% r2 _8 P7 Y. R7 J
就是在“加载树文件”那上面一点 ( q' v% |3 ]) `% z" }
$ z0 w$ w; H- q# y
输入RVA的地址和大小。
4 {9 S9 H: y) [$ u( \/ v+ c9 K; U- K3 {* X
点击“获得输入表”
3 o; J" e& l! R9 ?) M% O% ?  A
( p7 t, W9 y9 V; ], w3 [& r% P2 D然后点击“显示无效的”$ E. V9 c- v* ^  n, V! W7 m: d$ o

3 ^. z5 i* B* Q8 o+ X6 G接着importrec会自动列出
$ R$ u; I. L- [% a* W! q3 a  {4 j  V2 D) i( n
我们把深蓝色的字体  右键   剪切无效的指针
$ H! D3 ^; l: c3 ?) |( @5 J) L
7 U2 g8 B0 Y: h8 b2 S8 X# A4 p0 Z0 ~
8 L/ t2 P2 q1 X最后,我们点“修理dump”
) [& x9 m* k* ^/ p0 _3 Y8 `0 m3 z: {
选中我们的木马就可以了. ~/ e& F" T1 d6 w- D; R
1 X- ]* u( c0 c( g7 x
最后我们要用到c32asm: S) \; S! Q+ [1 u+ m
# B- ^1 r  Z  U, ~7 A
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
* m# q+ d4 z5 `" K& P% M2 x+ h, Z2 v9 _) y5 ?
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
% J( z6 g# I9 k' d, ]  r
# q- L) X$ x  }" h. X. `这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
0 W- @  M2 g7 s% B5 F* b1 K+ Q5 R9 b, K: `' Z
我们把马子拖入od的以后,打开了importrec1.6* C- ?  B6 `$ m1 B2 M  a/ p2 K
# H; v1 b: w1 _6 b
在选项那里,选择根据序数建造输入表和创建新的IAT
5 t3 [/ O2 v' I9 g# ^% ]+ K+ v; y: r% R* p. A5 s" n# {
如图
. I1 [- q  B1 \$ f5 y! D9 g
2 e. m* O1 ]+ \  \* [9 K/ q3 D, @) w  L2 d& j4 D
以后的步骤照上面的方法继续就可以了
8 x/ m$ p- b- N% q/ H
6 x- q3 P, N& C" a8 R4 j$ s不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
4 }; L  X/ B( a2 L
3 w  N2 G$ T" d' |8 s因为kernel32.dll的大小不一样。: k# i: q% a8 m1 L$ ^! K' U
4 Z: n+ Q3 l; \- \
3.修改originalfirstthunk
5 t3 u, o0 |2 o! ^4 |6 \9 q! b- k1 h+ o
如图所示+ J6 Q, v1 Y8 X

6 J$ I  a! K8 u$ Q3 X$ ?0 A: `4 s. Z/ N6 J
我们打开loaderpe,依次点  目录--导入表(后面那个横线)1 d; I/ {7 d8 |8 v$ C0 Y/ v

" P0 H( J# C: I) N/ [) b我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
+ ^7 p* G6 L7 @5 j8 [1 y0 ]" s9 |3 [0 J7 d
我们右键--编辑--把函数后两个00修改为FF9 A1 Z% N" @# R7 w, W3 v* p8 y2 O
' H7 t, W1 L7 y0 s' F
这样可以过小红伞查杀。  虽然会出现错误提示
/ J  s7 O! f) `; O/ e; G: w. r( @
但是不影响木马的功能,不影响上线。
( C( U1 B; [7 k$ b
( |" {* \* P9 m% v4.dll后面加20 90法过卡巴查杀$ j& [. [$ t8 v- {
  z0 w" n% ?0 Q  T0 ?
需要的只是一个c32asm而已,非常简单但却非常有效
% c3 j" m4 k) c& ?% F2 R
# a1 Y8 y& ~  F6 Z3 D% s' M; i如图
. `- z0 b" X4 }4 F0 M! z9 w' ^
, |3 v% k) y. S- ]! F" A- F& S+ o  W$ e5 F  B
5 o  L) G# Y9 E) Q( \( z
我们可以看到,
( }4 t( O! z3 Q% F: l# ?5 R+ N$ T9 D: P- G
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90- ~, n/ d4 I) K* g* p8 y8 `
+ U; L) q! ~/ X2 G( W
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection1 [* ^/ j  V) o/ o% v( ^1 G
, Q! J4 K9 [( \. `
我们只需要在他的所属dll后面加个20 90就可以了, g% V+ }$ t0 J' b( `) L
. V: ]3 u/ o0 T' W
卡巴目前还不查杀此免杀方法
# Z9 H6 p' T3 U6 M& t+ D  S2 I3 @( _0 ]. g2 x: u, @: d
# g# C0 Q$ D" k; {/ M
唧唧歪歪这么多,打字有点累了( J* D: p' [0 B5 F( x) E

: k& \, o4 N' g, ]7 Z4 P' r以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
% G+ @6 w5 |7 ]1 q8 q  k. z7 o# v  D; G
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表