返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
3 k/ ~) y# Y$ K2 h* U( r  n! J3 O6 m
特拿来分享给大家。
5 v6 K$ g8 o- S7 J# C  w3 ]& K# M7 S4 U  b- j2 ~, M$ q4 C
今天我们不提我们国产的那些杀软,真的垃圾的要死,* R4 E5 V9 `- x6 A/ ^! Y/ h

4 O, d# O) o/ m上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表2 p7 `' q: M; b/ F4 ^
3 y5 {! C  \3 k' m
我简单的重建了输入表就把瑞星搞定了,
1 P$ t, A" a$ h9 i; ?7 ]7 M& E, ?' Y- A' ]! b) B, f
失去信心了。我曰
1 Y. c0 v1 b1 [# r: E8 s7 g* U8 y: x" T$ E
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
/ K. s- c, B* E" u4 a( j' C
; p+ W1 ^5 @. v3 h7 E4 R首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。2 c) M: Z4 [6 I* e. b
0 z  Z8 |* L' ~# y/ F7 M* v) a
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。9 B  Y0 d! ~+ c; E- |/ a/ X4 n( u
$ j1 ~$ ?+ w+ b7 c
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
9 P9 G# c( F1 O* t3 x8 x
' l6 Z+ F% }  n, I. _5 R2 K' h过了以后再调到最高,再做免杀。: d5 }* Z6 ]+ L

! {, _$ P* J% ^% p0 ^7 p: r以上是废话,. B+ F' e) w! i: N$ f

, A" [' t, j) @4 v好了,下面我们来说下常见的免杀输入表方法。
8 ~7 j8 f9 Y, z% i. }" m
; K; ^! E" _9 v; p( J* A9 J0 r一。移位法
3 V9 k+ g; C6 Z8 U" C& n: d2 I5 G$ h* _# Y
这个已经过时了,我们的国产杀软及时的跟上了时代,
' x: X/ e# d' o
% p! z5 b' O' v: F移位法在去年过金山和瑞星,还有江民都是可以过的,
4 {5 w! S* N& Y, H# {
8 \5 z8 @7 n+ b# v# @现在的杀软智能化了,移位么?呵呵 ,追杀你。
- }8 V+ K9 O, ]+ }8 U4 r
- p& ~* z3 `+ M如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
1 G6 Q1 g% ~9 l# i8 \) ?2 i9 k1 j
二,重建输入表" C! t, J0 n4 E  D

4 h  P! c2 U: L8 k4 ~+ ?效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
2 g$ y: d% L. M
4 C9 P0 ~, P% `; X* f, {这里我介绍下,9 H/ `; T7 _( q; |  \

2 e$ ]3 w$ S  m) m1 B5 m用到工具:
1 r1 y7 n6 {0 a; F: L; [importrec1.6' K% K* F" R8 \) V; b  L( u
od7 m& g/ R% G  A: u  _: O' k
c32asm
% Y8 O% @8 S7 y" _: P: W* y. mloaderpe8 i3 K' k) Y0 q5 ~( [! H+ ?9 z
这里我们简单的介绍下,如何重建输入表
% J" S3 {: K7 e* T- A$ m4 Q7 @, P
5 n4 `# g6 \( z5 j首先吧文件拖入od,打开inportrec1.6! w" D, }. h+ X- k( r, @0 M8 {/ r9 a

3 p" y; G# L, x, g4 `! y如图 选择拖入od的程序,
* }" ?4 ?+ d0 u7 a) W
0 ?4 H! T* u& m0 n- C  g. D6 B% E; o3 m+ J
这个时候,我们打开loaderpe,
8 ?( C$ `' G# z, Y5 }8 L8 [) [4 u  J: v
拖入我们的木马
( \2 l; H! k# A7 V5 d. R/ ^- V
5 N) N7 A' @4 B7 b" ?, n5 C; d, ~选择目录,* q: `, Q. t  f2 K0 e1 D6 b
/ a2 v" f+ R7 r* m! N2 J
我们看到导入表这里。。。% J4 q' c! L. w/ k0 E6 L. z6 l' o; S3 q
& U8 c1 G! T- t7 y- h. \  {9 W
如图:$ l& Y/ t9 S3 \: {
7 P' ]  z! L, y$ S0 b3 N/ K! j) o
+ K- K  u6 n6 P+ D' U  l
RVA地址是0001D000  大小是0000154C
" `0 G- N) O7 N! _' ^0 l  r, \8 O/ c3 a7 I! h* N9 D
好的,我们把这两个输入到import1.6里去. P  D: I; Y2 I& ]/ s3 m. T( n0 s6 ~
+ @" \0 l$ ]6 J0 ?5 ~3 G
就是在“加载树文件”那上面一点
4 s) V& P4 \  r. f! o, q' r) N% F5 `1 H
输入RVA的地址和大小。
) h' F3 z0 Y; T/ o* A5 R$ Z" d. q: ^( U& G# E9 u
点击“获得输入表”; J+ k* C3 I. M. a) Z* q. g$ V

6 d( u, f& B5 q7 r& n然后点击“显示无效的”
# w+ `0 l: V# Z# @5 e
- h; w2 P2 Z/ e4 O! E1 \  ~接着importrec会自动列出& N; Q1 d6 j; |5 y( |! h: G

" q5 B2 l! q2 N& M% d' y& c我们把深蓝色的字体  右键   剪切无效的指针* w/ L9 z6 ]3 X1 }4 B. I

) H6 i& @4 z- ^7 G4 {8 ~! b! u* a1 J1 r$ s1 d0 F) I: J
最后,我们点“修理dump”
# _: H; H1 @5 @: H* b1 N! P9 \  _& V) {' J7 P: V
选中我们的木马就可以了( d& P  I8 g# Z. e
. _& P' }8 A" E& `1 e% J7 S. i5 C
最后我们要用到c32asm7 o2 @; T6 N' ]3 `
( m' T* ~/ X0 S6 \; ^6 v, M5 C' P: B
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。% B$ q2 V+ A) r2 F1 }  K( P

1 K& ?( |1 D9 J- ~& L3 Y这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)# k) g7 `' v$ y( q) Y3 O; |$ }

0 ]$ J# {3 I9 \* i7 `2 d& Y: l这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,; [1 o( d3 K( a0 D2 D9 J
& Q% @. Z5 x& T1 k- k
我们把马子拖入od的以后,打开了importrec1.6
; j: l( s7 Z- z+ {& F( f
6 e0 y) e& @& e( T2 I在选项那里,选择根据序数建造输入表和创建新的IAT, X2 n+ K( e+ q4 J1 ]: h) r2 K( b  K

& V+ Y# K' M$ v! Z  r如图
0 {1 p, v/ S, ^, K# e& X' |; ^$ v6 X# @4 R( Z
0 j0 ?6 p* f, p  u! g! x
以后的步骤照上面的方法继续就可以了
/ ^8 p! K  A1 c
" v) Z' [; u& A0 X* U; J2 E不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了, x0 k* m5 N1 f7 X$ m0 w) t$ ^

, _) C, o  F' e5 N5 S4 g* _- S因为kernel32.dll的大小不一样。  y; u  Y) f" _7 E  g6 p

; Y; c& U9 S) z6 A, ?3.修改originalfirstthunk
/ |; \2 e0 q6 J3 V* o  A2 T
  q' Q+ t/ N$ p: G& N/ P如图所示
2 P" u1 c+ h# p) q) Z  F3 y0 H$ A% S$ f

& R7 n$ t1 V/ x: }6 F' U$ P我们打开loaderpe,依次点  目录--导入表(后面那个横线)
4 X# y( t2 p" s; n% e: G
/ l3 ]7 S0 m: Z, T# }2 I: d# h我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll7 Y7 a2 R4 {# H! o+ J2 w9 v
  @  x$ T! N+ l1 |' A
我们右键--编辑--把函数后两个00修改为FF. f1 {3 O2 E& e8 y7 k
' s1 ]! H: K5 q% x& s
这样可以过小红伞查杀。  虽然会出现错误提示
$ \# E/ |2 s# Z. [' B: S/ X
) \. k; G! Q5 U: |% ]: m+ }但是不影响木马的功能,不影响上线。
6 l1 }9 z5 z7 R, O# a! L/ c' n) k7 f
4.dll后面加20 90法过卡巴查杀
6 E1 x$ k$ g# z: o7 p$ ]
$ T, k- C( R# D3 O3 S! s6 j! P" n需要的只是一个c32asm而已,非常简单但却非常有效
  s" p9 }8 W1 C6 I) T; b2 }9 c+ D/ _; g
如图, W% Q2 }% {5 `+ c# y% q

  i- ^( p7 r' S# j5 D& x# c+ r' X4 Z
5 x; `2 z( \; K# b4 c" e9 g; ^
我们可以看到,* I2 S& y+ v2 V) w! |! |
! S* @% u1 Q2 r# o' n" t
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90$ X9 I7 G, M' c0 Z4 A. J
+ y$ ?# k1 U% l" D0 b4 c
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection9 d1 G# ?, W' ^" ]& O/ s' \+ z0 U
4 w6 ^2 K* Y1 {' l! i6 ]$ H, g" J
我们只需要在他的所属dll后面加个20 90就可以了5 @- \: Y; T* G+ K' r

% b4 B; _0 A/ N2 A, x6 Y; ~. @卡巴目前还不查杀此免杀方法6 ]' ]1 |9 W  ^

* c$ o( y: o/ t( g3 ~$ b" ]. k4 p9 I$ }
唧唧歪歪这么多,打字有点累了
4 ^. I, m8 R6 @8 E: `/ O
& G+ u. u% ?$ f0 U7 p- @& M以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
+ _: A0 h8 E! w( `" d) K; U  y+ w( R" g  ~
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表