返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
( {9 X/ q7 I: W2 o
2 [( p" L/ Z# q$ ]1 }特拿来分享给大家。
5 I: V( L2 i" z7 J0 g
' `. w; Z9 T7 F6 @今天我们不提我们国产的那些杀软,真的垃圾的要死,
! |: b6 H* J9 l8 z( c- G/ q4 }- K
; P" u. l8 W7 a6 f$ x7 {* A# v上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表% u2 o% v( F; n& W0 ]$ ?8 q

; F+ T+ Y" l$ ]: b$ y  N6 `我简单的重建了输入表就把瑞星搞定了,
" p  ^4 A& G! ]  J$ F2 `$ ]9 v9 w
失去信心了。我曰
# ^' Y+ a) M8 m, i; S( ?9 Q- `' `4 F" d& d# ~' Z( _& b  \( s
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。  F; ^; x& Y+ k$ F  Q
/ N7 s" C: l4 W' d
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。* n2 a9 P( @- }4 m

8 s! w$ a# O6 `$ r; U外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
5 n% n, v- y* _7 t6 Q
$ T# I, U# U0 J+ f/ G' V9 M高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低- Z" G9 m* q8 P5 N- j) j

4 ]0 s% d3 [4 U$ s! ]6 X* f& S1 b; T过了以后再调到最高,再做免杀。
0 l6 c2 m& l" N! C, ?  Y8 M: f& B6 B) ^, q( t+ ~
以上是废话,* ^( a1 k* J  U- X
; k) T$ X9 o3 ^- g- O
好了,下面我们来说下常见的免杀输入表方法。
) j5 O% u; Y' L6 k6 F
5 i7 D. ?4 O. ^$ ^% x一。移位法
- z9 ~1 L  c2 u' R4 |
* g6 D! Z% U! q这个已经过时了,我们的国产杀软及时的跟上了时代,' V* m( C9 T4 V* Z- g6 e  n& `& o1 f% r
4 Y/ D$ o2 E! g4 U1 G. b+ Y2 n7 _
移位法在去年过金山和瑞星,还有江民都是可以过的,
" p. @/ M* `$ D/ V2 c: e$ i. |# M3 R. @8 U) e) o& A$ s
现在的杀软智能化了,移位么?呵呵 ,追杀你。) U! U; U6 F  s- @+ M1 K' ~7 B

: N) u" B: C& x+ x* P3 G. |& B- ^. O如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。7 ^7 ?( u6 {0 e8 g5 P/ e: g

8 n5 L; S0 B+ W! m2 m$ ~) H) L1 }二,重建输入表) z3 ^3 k4 d0 F$ W$ v
! E7 \) r9 f4 ~$ @3 [4 r( B' R/ n' x- T
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
. s( V# I& N7 S3 ]0 Z, k( m
2 p3 E* d' M% }. D4 K这里我介绍下,
6 O! ]. M, T0 g" @' x- n2 w8 l
* L. q) c( ?; k) c. M& }9 ^3 U8 M用到工具:# O8 c6 G- v- y) Z3 R6 T7 y
importrec1.6
4 G- }$ `0 ~5 |9 Wod
/ `. E; n; M4 _0 m1 a7 n- @1 Lc32asm5 D9 G1 B: d" e7 c4 E' B4 i. U
loaderpe
9 u7 X  i3 E4 x% Y- D: S# V这里我们简单的介绍下,如何重建输入表
$ O, l0 t; T# e8 D1 `: ^# y
& U$ ~7 }' z2 e$ E9 U5 o" E首先吧文件拖入od,打开inportrec1.6
  }- c- ]6 T1 d% m" I1 r7 K$ P" }8 X3 m" M
如图 选择拖入od的程序,
- J2 D* Z+ P0 c  l
2 E: w7 B- }- |) {" l; w5 e6 ~+ U: f5 k8 r
这个时候,我们打开loaderpe,9 m; v% `* \5 w! B3 P0 ?
2 I0 w3 `  {& H1 l0 C
拖入我们的木马" l' ]' P0 K- g) C# N; G: j
3 p1 i0 o4 E; U6 P; Y& k" a3 V
选择目录,
) c  ~/ ^- E2 Y: ?5 C
, Z8 g# ?6 E; T8 \, s0 `5 V我们看到导入表这里。。。
7 g: k4 t! ]1 _: Y: i, ^; p9 k) Z3 k" j
如图:8 R, n; Q' G0 e: t8 P' e& |. D
1 z6 p1 ~/ C! b6 _

6 k5 Z3 k: m( ]! F. O. F/ u3 ~RVA地址是0001D000  大小是0000154C
* U6 t6 N0 E: l0 s+ [9 d
9 @1 g( [4 E! U" y好的,我们把这两个输入到import1.6里去
; V1 _8 L6 R3 J. _# v: V, e+ N& u8 I1 ?3 u, ~6 q, f6 g7 B
就是在“加载树文件”那上面一点
$ F9 r) e& U4 p( y  g0 u
: l2 a  O1 O" d1 X输入RVA的地址和大小。
( K, V, l2 o+ G1 Z) G' u8 c1 `7 ?
点击“获得输入表”
) N  X* g$ I8 \. I3 u9 e3 u2 J6 l* x
然后点击“显示无效的”
/ |, @5 z0 `0 H/ v: z) U
& r) O/ ^& A. ~, l9 g8 Y接着importrec会自动列出  T' M6 \! A* \' q

  V& S* k  v3 D* T1 b. I0 @3 ]' M我们把深蓝色的字体  右键   剪切无效的指针! C, J: K( y5 n. U& M( I. T

2 s- e$ h  U) v4 k) t$ `0 n+ ]$ [
! ~" Z. s: ?# N7 M, {' W) N9 @( k最后,我们点“修理dump”& z' c6 \* M9 A( C' _7 n: J
- a& ?  \& u1 s
选中我们的木马就可以了
7 e5 ?: t# \7 z1 d2 Z6 Z9 ~# @8 {3 }! K
最后我们要用到c32asm4 ~& C8 E- W+ u9 T$ j6 N
" X* X' y: I% Q5 F& h
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。. v$ w# I# e+ K
$ F( F8 F, J  U$ W5 E5 b2 B
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
& {- D/ c+ Z  p6 f" \4 [" Z1 f, ], C1 J
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,  I! _: h2 T% I( Q4 w7 k" V$ P0 j" Z

7 d- _$ C* [2 W0 J- l  D我们把马子拖入od的以后,打开了importrec1.6: l. ]) R2 m* i4 T7 G8 m
0 j' |1 b6 y. g, t) d1 M
在选项那里,选择根据序数建造输入表和创建新的IAT8 ?6 F0 X7 }% f0 w* I

8 }' a/ j. a) _( A, @: U2 Z8 Q1 I如图
; g5 N3 J3 |) J6 {6 A
7 h' f9 H; F$ v5 |6 q# Q/ N
% H( m: U+ f; o! z6 ~以后的步骤照上面的方法继续就可以了( |. m6 |" h: U+ ~

, C7 I% C' L7 C+ t) q' @不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了2 r* I- h1 A4 [$ A. [  V/ ^
5 C" j# Q) e; {7 l# F
因为kernel32.dll的大小不一样。& X; k* X$ F: E
: s5 `+ T; ^$ J1 E8 |' E
3.修改originalfirstthunk
  W" M9 l& y& Y( m. ~' j; w! o) v' k5 c- w/ c" i
如图所示
; t& q/ {8 ~5 C6 X; r. J. O$ v+ ~4 n/ r
- p  U2 X; D7 `, A
. ]% y% C9 m& R7 {$ m% r3 `: C我们打开loaderpe,依次点  目录--导入表(后面那个横线)
! c  O7 e- y$ O# \2 B' [; L3 Z
* \7 ]2 [3 p& O& [7 s, N- S% F我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll% t: w6 X, S' W: Q% [% ?; a; Z+ `: i

: M  d- s* E* ~6 F: V我们右键--编辑--把函数后两个00修改为FF
0 \: U- r4 D! V1 @' \* T8 v/ v. K
/ u1 K8 h; F+ P+ W这样可以过小红伞查杀。  虽然会出现错误提示3 |5 c, o0 `* z& p( N9 ]3 q( v) k
# h. m) {( ]! ^. a! Z# q- c( P
但是不影响木马的功能,不影响上线。9 D+ C# E8 M/ v! Q) ^

! I* N/ k* ?6 Z1 e0 f1 p" I4.dll后面加20 90法过卡巴查杀! r2 o: E+ E8 j9 d7 P! Z' p* w! Z' `
' B0 j" k$ _8 _) O( _1 _% d
需要的只是一个c32asm而已,非常简单但却非常有效
0 O2 }7 N  n$ s1 S1 g/ g; e. T3 H5 }: L& W3 b7 T
如图
) ?# l# U  G, I( R- ]1 H
* N, X7 l6 V6 u2 b  Y. S+ z9 C- k# w. v

/ w, N9 w1 j$ k- z! j+ c0 F0 E' A我们可以看到,% ^/ |  b) L; P6 D  T' q

9 W0 T8 S& z' h# h) u在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
: `3 {. n7 r. h9 @$ E% N$ [5 p+ y
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection# a0 i% R6 c1 n. v

: i1 z+ ?' U. Q4 g6 z/ l我们只需要在他的所属dll后面加个20 90就可以了
+ R* c& m. ]! [( M1 t$ u) j% a" Z9 H9 B8 U+ l, J
卡巴目前还不查杀此免杀方法
2 j8 C" e' o- h7 t% d" c* ?" A( T. H. G! s4 N& u' `4 v7 n/ d! f; w

3 V' t- N; y" j1 s) g8 y唧唧歪歪这么多,打字有点累了
" @$ S$ {7 N5 r9 d, n) |; p9 f5 _0 w( F9 T7 ^9 T% v, V9 q! X
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。0 a! K; |- b. k9 g- o$ K( t
$ {( \, E) j: a# {' s" w4 O
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表