返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,6 {$ T  U' {' w& `' p& j

3 F2 z8 D1 m) u: {特拿来分享给大家。$ u. Q3 L* w$ p

( Y3 u' P4 s# y0 m7 [7 y今天我们不提我们国产的那些杀软,真的垃圾的要死,5 f7 k/ p  W# N) N

7 C; {9 c6 o; o7 |) e5 _& ~4 Z  p上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表5 R& V9 R. ?  M1 j8 W# q5 A+ }
- J$ k+ d4 `9 m4 H+ X; b
我简单的重建了输入表就把瑞星搞定了,
0 K( {: M( ~3 s
5 v* p. x+ m! F0 a- E失去信心了。我曰
' C( i4 ]% X8 N( ^* J; N
, J$ O3 g# J7 i! o5 _! ^4 o今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。' j$ e! C) v% W$ t  C* B4 e6 V
* d. M( F% ]" }+ h
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。$ k( D& V1 v: Y
- ]+ a$ C7 k# o
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
6 Y$ R* W# _3 b6 W. ]1 j. o# W: J; K3 W6 B! ]; l6 H: t, L  F4 }
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
/ u# r  b$ K0 B
) e: r8 p: X( E) V# `) d过了以后再调到最高,再做免杀。# r- |. N. t# b! b
  z7 ~# u- \9 D/ S6 X
以上是废话,
; i& _9 H! f- X  P  J2 I1 e* z) ^7 N6 Q9 K' _9 ]" A
好了,下面我们来说下常见的免杀输入表方法。" a' n/ y- S2 V& T
4 b3 J+ I2 Z. {' c5 ^
一。移位法% s( {8 u7 t/ K) K- D  X

$ x% J' ]1 X" k这个已经过时了,我们的国产杀软及时的跟上了时代,  X5 i. ?" `2 t
: H0 x' f7 B* E" \) C
移位法在去年过金山和瑞星,还有江民都是可以过的,  I) @% A6 {0 |% g3 p5 B
! p& r$ {8 c+ |
现在的杀软智能化了,移位么?呵呵 ,追杀你。
8 Y" N0 d  \8 j' O9 h# \% S/ R9 }* e) Y0 M6 W
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。  h& A1 \6 ^, m, a7 o9 |- ^
9 _4 h- u  ?% ^: b% Z9 F
二,重建输入表3 I* H& m3 c2 i% Y, `6 r

0 N  G+ x9 y9 w& n8 k% s9 |效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈+ f/ Z% T! P  D4 V* J, C2 M

; j$ D9 y  B7 g' g这里我介绍下,
2 w2 ^. }  m6 R4 H; w" s8 @8 V3 {0 J2 z, Q! b& r- ]
用到工具:
2 J, C3 i& v% K& b0 I+ |& h& {importrec1.6
) ]2 c. f/ O* a7 {: ?1 L1 Xod
% D/ O' ~0 {6 i- Tc32asm
% Q1 D" O4 _! O* {$ ~& }loaderpe
' V8 X( X- }$ w- G这里我们简单的介绍下,如何重建输入表  \# K- B8 j# Y- M; b0 }. q$ C
! c( r) A. e" ^. ]+ f5 m- F, {) X
首先吧文件拖入od,打开inportrec1.6
( K- d6 k& U* W9 s" `2 ~: L3 T* b4 }7 D0 u7 k
如图 选择拖入od的程序,
3 A' U) |0 m. Q& b& p# q- D" K- p! \* N/ A
$ M+ n' |# V1 ?9 {8 Z$ F
这个时候,我们打开loaderpe,
- W1 T; V7 H9 c* |- F( v. X& {# X% P% r' V$ l8 u7 R8 D' Y
拖入我们的木马- g- C' b4 }6 a, _; \- J6 S3 T

5 V7 Z6 q4 b4 A2 |7 L选择目录,( i6 }. z1 @$ x: e/ |' c- i
( z: O$ v$ N) L9 k: q
我们看到导入表这里。。。
) m% F! Z/ D. V4 q  {. r6 P" I" l
. q% _* k' S/ O/ K1 U; K5 K如图:
( |! D7 d; J5 ~( S. g# v' K$ L& {3 g. F) I
( c9 h7 w! R$ A; v
RVA地址是0001D000  大小是0000154C4 z* H* K: |+ y; a

/ x$ p) e# X. c. S4 _+ t/ k' q好的,我们把这两个输入到import1.6里去
- z, [  |5 Q+ e
4 v6 [0 ^0 {) T: d8 |& `就是在“加载树文件”那上面一点
8 E5 P. v5 t" K
1 ^5 D* t9 |4 [7 `& C, L. @输入RVA的地址和大小。
1 z0 T& g2 Q  B7 w6 {0 G$ [
! o) u9 k" Y/ T, m# f" v( F点击“获得输入表”6 @- H( e: ]2 s6 G+ A' m4 A# l: X

4 k4 N. D/ s# }5 p然后点击“显示无效的”
/ U6 T7 C( C: w. b2 F0 [
0 X7 j) a" v  E: o) g: o- V接着importrec会自动列出
% \+ y) K' s. E. u$ X) g. S
0 s* d! ~: V5 [" Y我们把深蓝色的字体  右键   剪切无效的指针- U5 ?( O0 O$ n9 t$ ^, v' y
1 V9 F% {3 w: u" H3 x
$ J9 N5 k% v# \' C
最后,我们点“修理dump”' d8 y0 k/ Q2 U6 c" k; T
, u8 F- H( J9 ?. w! r
选中我们的木马就可以了
" _* U. D4 v. k- f$ \5 k' x8 V- Z0 M- s% |3 }0 m2 J* w: Y
最后我们要用到c32asm5 v& j3 C. k6 _$ ]! u9 t% M

- w9 y/ a% K) L- w. p+ L8 ?# S. I我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
( A7 u- p$ ]. H( ~# \7 c6 J5 g' z6 H! y# a. Z% L  v
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
0 Q8 l# R! H1 C+ Q+ {( ^" H3 ?3 L: G; m' R1 Z# g1 H' `5 v
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,* g* f0 d  G, n: Z: ?% S: H
: I8 O! r) Q% R1 Y3 [7 u) F
我们把马子拖入od的以后,打开了importrec1.6; J& X' O3 [! P( G; K+ p1 W# ^

# Y3 @  Z4 g' G' p. ]7 H: Z在选项那里,选择根据序数建造输入表和创建新的IAT
( T. S  M5 J* K7 u/ n  d8 n' Q  u( h1 X+ m, g1 _
如图0 T- _1 f( `* }# I2 b7 m
: X0 q% a3 g8 U8 X
6 G2 m6 x$ W3 n; k* [; t6 g
以后的步骤照上面的方法继续就可以了1 ]8 s; x5 ~' d# R( g, X: v# k+ u" `
; U/ K3 Z6 F, q: W7 b& X6 F/ N
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了4 n* {  ?# f/ z' e; I
& O# X1 V8 T# {/ Y0 x/ t* l6 l
因为kernel32.dll的大小不一样。7 g' u, `- ?1 B

- B% O4 n% T7 S3.修改originalfirstthunk2 V* T  b$ Q) L9 E  j$ a
* x+ z! e8 {9 L7 ^' k, W; I% {
如图所示9 K" e! j+ a3 d7 X2 B: t

( V& U8 j! C) r7 @4 d9 G7 n# F* t9 R) k5 L) a
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
/ h5 M7 t( g5 {( C. t& L$ Y5 |) M- `: Z  s, x- \* a8 h) m3 s
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll* B+ m( t5 i( n$ p

9 F  N; I( w; Y6 u% K我们右键--编辑--把函数后两个00修改为FF
. {. l; @$ y% e; x4 O: _/ v( h9 W# x6 b0 ^; J+ j* P8 G
这样可以过小红伞查杀。  虽然会出现错误提示6 s! @& M4 E7 B) A# X$ H
( r! g3 K7 c, f! }
但是不影响木马的功能,不影响上线。
3 X) u' E% o6 i! z
) G$ B% s0 J( h( g4 V0 N1 O4.dll后面加20 90法过卡巴查杀( w8 f0 y  d0 I5 k# a

5 V9 P: b% a8 B) Y1 |2 R需要的只是一个c32asm而已,非常简单但却非常有效, M# D9 a% j. S" |% [* l3 x" N+ [4 ?7 W

: G; d% S9 k; C" B如图
  P- W0 P( H, w1 e. Z% i5 y$ t; a! g+ x
8 W% n/ O3 i: C# G0 |) V7 [" V3 \# n" d9 b
0 u4 P- j4 y- r. ~
我们可以看到,
% i" |( K) o+ @8 Q( w/ c; Y' W9 I3 q: k, g, I  ]( y' Y' \( O% d
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
; I4 B5 O8 A; ^4 S' [3 x0 w, l/ X; U$ d7 F* v! M' ]- e+ I
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection/ D  h8 E0 S3 c
8 _: y- A* z" E( M3 w2 m
我们只需要在他的所属dll后面加个20 90就可以了
6 p6 `& f- \& o, @* j
# M+ ]8 z# B8 T' K卡巴目前还不查杀此免杀方法7 S  T' Q. a/ {0 ~! K; y
# w: \6 O& A' P2 W5 F

# N6 H: t5 N5 M- V唧唧歪歪这么多,打字有点累了6 \8 e& W1 b: r9 N+ K

1 s2 P4 I; Q0 k  i( V以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。! I( m# u  e, q+ `8 [% Q
' ~3 o, X) \  ]3 N/ k
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表