返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
/ Q6 Z4 [) p& `+ Y9 R& z  ^  F. `# y2 t
特拿来分享给大家。' Q3 T, D+ j) j$ `! H% m

9 G' h& Y( u& s今天我们不提我们国产的那些杀软,真的垃圾的要死,
$ U+ [! U* k4 r  a% d5 C1 l1 A( I3 D1 S7 U$ J* \& ~- s
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表8 ]% ^2 p% n1 E0 q# o

" s0 `& {. K* T8 p. Q* K5 m我简单的重建了输入表就把瑞星搞定了,( V: |' |( f) n) j" C/ S- J
( |( O- E  F8 R. f; e) ^
失去信心了。我曰7 R6 {* `% r* F: t0 S( ?& {
1 Z1 N4 @; F# Q3 W% T
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。6 P/ J; y3 `) E4 o' l# V% C, F
5 a$ g) E8 Q0 c* R
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。: y5 c; y- U# h. s8 [

  p4 U7 F- G' r; B外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
) o; v% Y2 q) J0 j" N! M" }/ Z, i6 a! l( }1 e% x) u2 v
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低/ s2 u) j  |8 U& B/ u6 g- Q

$ {- k( M( P3 Y7 x: _, r1 T; e过了以后再调到最高,再做免杀。
# w9 j) b2 E* x$ U6 a; S, y2 _% P! n) ~7 L7 W# J% a
以上是废话,7 _8 U. B+ |& I9 p' X+ g# [

  p8 \; d9 x; V7 n* _  f好了,下面我们来说下常见的免杀输入表方法。
$ t. J3 ~& ~0 D8 }
5 J7 H; @2 K% }4 S* ^一。移位法
3 ~0 h' b. a  @9 H
. C; Y3 ^2 R) m这个已经过时了,我们的国产杀软及时的跟上了时代,  o$ i/ d& i2 i  E5 n" v
7 p% k" E8 ~4 C) ?5 q
移位法在去年过金山和瑞星,还有江民都是可以过的,, M  {& ~% G4 x( ^5 b, Z
, M/ z- M1 E6 m) o; X0 q
现在的杀软智能化了,移位么?呵呵 ,追杀你。
3 K8 U: }) _" Q9 g3 }$ T4 b( O( t. L7 ?
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。( g5 d7 M; j" W0 u

8 y# Q+ _+ y1 X3 Y# h二,重建输入表* r* D% P3 `% @

8 b, j! s8 Y' U效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈( c6 H* y0 S8 C& l
# r  A0 |5 K9 Q, V9 }+ l
这里我介绍下,& ?* P( g  v4 @5 p0 T0 v
* d2 b& X) I+ l1 |8 D, w# z/ q
用到工具:0 v2 d) m5 v1 ]( `$ N) y
importrec1.61 Q/ K3 f* X2 W& L; c  `. ^5 P
od8 t0 U0 r( {! }4 k
c32asm
8 ^% {' P4 h3 m( Xloaderpe2 M$ `- m0 c2 R# b
这里我们简单的介绍下,如何重建输入表( {" `9 q  Q2 B. d" L  u

+ a' X/ ~: ~1 {$ {$ y7 \6 P首先吧文件拖入od,打开inportrec1.60 s# m& Z1 W* r2 _5 ?1 N0 P7 J5 u

6 b$ y9 @/ ?8 r: f& q6 |如图 选择拖入od的程序,3 g+ @3 l) K! [" Q, ?
7 g" b* i, C2 n/ g- Q: x4 ]

5 B/ ]! i  d* ?6 |5 [这个时候,我们打开loaderpe,1 `& h9 A+ q; E
' F" N8 I& \  ?$ Y
拖入我们的木马% Z( }5 ?) h7 o+ @6 u$ p/ d/ m

) r, F4 H( U/ g选择目录,' [6 G, F% H# _- Y
$ J6 l3 |/ d+ X9 k2 i8 h( z3 Z
我们看到导入表这里。。。
3 m% D4 S  Q$ |% d( n2 P8 Z
8 S5 E9 `9 L$ D% L, q如图:5 j& Y1 d2 K0 J; t* U# _

8 h8 \: W( @4 ~, j  k3 o- A- s
2 f' q' W1 G. [9 hRVA地址是0001D000  大小是0000154C
( h" i  |0 M2 W& R+ Q
4 l# c- M( [. O) P0 x6 O7 k好的,我们把这两个输入到import1.6里去
+ j: W% p: O4 d9 ?* |9 |% p
. h7 c( W, w/ J4 k  v; O9 R就是在“加载树文件”那上面一点 9 z2 }6 t1 W' x" e

/ R- ~( J8 ~8 b5 w  k输入RVA的地址和大小。
. g$ T/ p6 P! s2 ]9 |$ H. K2 k
点击“获得输入表”
/ \+ n; C& V0 L6 b0 ?0 U+ z( `1 p, T1 Q' O+ M, P2 j' h; y( g/ F! P
然后点击“显示无效的”
+ E) D6 T7 f  d) f2 R7 a2 n
8 X( Z4 I- g- _4 y接着importrec会自动列出2 {' B/ f# i6 D& N# X

: A( B& e1 G% k! [( _我们把深蓝色的字体  右键   剪切无效的指针3 U3 ?) }: e) C# I; j2 U. p! s$ M: w

( V5 r2 i. l. B3 |
& {5 ]) ]4 t+ ^- S最后,我们点“修理dump”
' U+ _- i' x& E: e- P3 J4 P# v$ Q) x  y* B
选中我们的木马就可以了) s8 \. x: S3 l4 c7 w. I

. s% s- c% l2 M/ w( r$ o# a最后我们要用到c32asm
) D* ^5 c7 W( @9 ~$ J/ q/ O5 X/ Z
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。" X9 K  J$ G4 r2 R' @) G% p
1 C3 w3 V9 a& K! ]
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
6 [' U* \  S* M" E
, u5 {# D  V6 ^) S; r8 M1 f2 [8 G这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,( x; ^, _; I0 Q& a& Z, v1 H
2 g) c# {. {4 y9 \6 K  T
我们把马子拖入od的以后,打开了importrec1.6- s" O+ ~4 U0 b5 Z+ p, w# d1 ?; U

* F* a& o6 r# U' P5 u9 u* ^+ W' ~1 L在选项那里,选择根据序数建造输入表和创建新的IAT+ w8 }+ T9 I" [+ j( |$ n$ n! X
- T/ l  F) P. O5 l: y1 ]
如图$ L8 q9 P! E( {+ J
, U* g* o5 g: j# b' k5 [

  C# o4 J( p$ o3 x以后的步骤照上面的方法继续就可以了# n: [; J/ p2 ^9 c
3 _$ h" o' @3 h
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
0 T3 q+ Z% U. y& N7 Q
8 C# A# Y7 [6 t因为kernel32.dll的大小不一样。1 U* z) X$ g3 _" C
. s) K% `, p/ v3 K) T2 C6 U3 k
3.修改originalfirstthunk  |# X7 H$ s2 M. n& A9 ^

. m- V; b) _: h# m2 t$ O9 q  X) x* _+ r如图所示5 x0 R# Y$ a  Y. e/ C

2 [3 N2 c, N6 _/ j% v; x9 K# ~6 c9 C5 g4 z4 I- Q  d5 D
我们打开loaderpe,依次点  目录--导入表(后面那个横线)6 |6 l5 }, o7 a' g' F8 E% Q
0 O/ s- p5 Y% t3 ]! Q
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
- r/ r+ ?" U9 [% K8 M/ v- y* o# c. ]! b6 ]$ B
我们右键--编辑--把函数后两个00修改为FF# A" H) J  V( V2 |& w" |  v
" O5 `2 N: I2 A; E2 X% u/ s
这样可以过小红伞查杀。  虽然会出现错误提示5 t) F( _) h/ |7 }. _: e
8 D( W- g% x+ d/ |9 B
但是不影响木马的功能,不影响上线。% Q+ [& h! w' v$ ]( w
8 M% ^7 a  K2 a& L6 w
4.dll后面加20 90法过卡巴查杀% v7 ]' E; X; R% y- b
/ u3 J5 g7 A# S) b  r3 W
需要的只是一个c32asm而已,非常简单但却非常有效
, e: \- h. I& ^$ F3 t$ q1 {3 D4 [( H) N5 |
如图
% Q( q6 b# ]  o% F7 O+ W/ U6 j
, U" _" Y5 i) Q$ K2 I2 O9 N$ J! g  r2 k
4 [( p" W9 }2 f3 m" f- |" f5 ~# g6 H' J! K! K* d3 ?9 G4 |) W
我们可以看到,& Y0 |. U" ?) o

: J0 Q: L+ W" L在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
5 F0 o6 r5 T; K! C2 \; N$ m
0 S3 y3 D# N% [4 ~. h这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection$ E4 |& B4 v) d
- t! _$ e. |/ M
我们只需要在他的所属dll后面加个20 90就可以了
) n5 x. P$ c7 M- v
) a- f, U1 R2 e: Z! v卡巴目前还不查杀此免杀方法2 t* o- M! }% F- d1 }" L0 i8 V
' A' G, G* ?  v0 W- W+ u8 c
+ L( ?  z9 X' v# n
唧唧歪歪这么多,打字有点累了2 X5 f: O: W4 t7 Y+ d4 Q5 i

% l( P* h0 R) F+ z9 U以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
: j. D4 n# h# C/ U* O8 ]$ X  r+ L0 Y) ~, s! m1 r' ?' |
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表