返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
) X/ \# I' K4 {$ e
- x2 o1 f' [; ~/ h特拿来分享给大家。
# ^( u/ w0 @. a, C) i/ ^: D' x+ m/ V" K; x  v/ q8 q/ A* o
今天我们不提我们国产的那些杀软,真的垃圾的要死,
1 q% ?/ F! P: O& I. T, f% J3 n
  r% O; _6 p0 @& C+ N上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
7 c! u0 g* O7 a3 F3 R" G4 E
5 b  X8 C0 V2 S4 [0 G我简单的重建了输入表就把瑞星搞定了,
- P: J5 s, L2 m/ n3 O4 ^; b# K, g# p9 M4 f
失去信心了。我曰0 _' }& @- k! k! ^4 B

( J& C1 `; q+ y+ U4 ]2 C今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。- T/ j# q# ?- k# w. e% E3 l, d0 B+ h

- n( k; B# T6 \1 B首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
# w; r" C$ m7 \0 X$ p, K- @' C" J9 k2 J5 s& ^  Z9 M
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。4 V" Q/ J; L1 o8 P6 M3 _+ Q
' F7 }0 \, ^2 o/ D
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低( ^, s" {- Q4 e- S- g

9 W- L" Q3 n: T  _过了以后再调到最高,再做免杀。4 ]; ^6 w, X+ N& g

  r: ~/ w' a1 D* g  H* P* l以上是废话,; _% C# z8 W/ x: [
, X% y  K8 x' |" i: i: S& p
好了,下面我们来说下常见的免杀输入表方法。
' u. ^# s) E0 J' v- y
( s& B& n. J6 a一。移位法* d9 k7 c4 J1 p2 S; \2 n0 n

4 ^0 d1 s( A2 t  ]2 t: u- k这个已经过时了,我们的国产杀软及时的跟上了时代,1 ]0 B% U# W5 n  q7 ~1 e) [
! k7 i1 L& |& [* b3 P( K( T
移位法在去年过金山和瑞星,还有江民都是可以过的,
1 W/ R1 M& z# o! e7 c
' A8 d) Z  C8 o$ s现在的杀软智能化了,移位么?呵呵 ,追杀你。
. E0 ^+ l  w( z( d( @$ L' O# g) F5 v/ F
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。8 G% F. m3 L7 @3 \  N
, `6 k$ S4 E( @7 m7 h! y
二,重建输入表
1 d' x( F) @# M$ L" f5 |2 w" @
5 h- ?' X- q" z0 t; `4 a& U" ]效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
* f9 N# K9 p' _" Z
+ d. ]3 j( n$ P  L) |, q: k9 e这里我介绍下,3 i/ O+ k  H1 s) j& H) f

# f7 N0 r4 ^8 C" E: q% m' E1 u用到工具:, |0 f- M0 W" `. w2 s
importrec1.6
: T* v8 t3 l; g3 _4 ?5 cod
* }0 H% R. k4 p6 u3 bc32asm# ~6 s0 O$ Y4 L* c8 o; @! _
loaderpe  K( m% p: y' @$ S% a
这里我们简单的介绍下,如何重建输入表
. a) R; t5 e1 j8 \  v8 @3 G& u4 N& d  W0 L. Z  O$ v: \
首先吧文件拖入od,打开inportrec1.6
. k; y5 m7 _1 F4 \+ u8 i
& K+ v& V4 e! R" [如图 选择拖入od的程序,0 ?+ ^/ T9 v) @! ]
" E% h6 W2 x( v% l0 r' x
2 [. d& F( C4 D9 s% Z% u; }, C
这个时候,我们打开loaderpe,, \0 X1 S$ g7 h0 d

4 J5 }! q3 H! t! f8 j" `拖入我们的木马
+ n; Q, @1 _  d! b' s; i- y+ t: W% V$ c; i4 E2 D- U+ v
选择目录,. @( M! R. ~$ X' ^& z
3 d% G+ I7 j" |# d1 y1 n
我们看到导入表这里。。。
- B1 o, L, I5 f& w# P- \2 f# U# ], y) |8 F% h7 Q
如图:- _  g2 `% _/ {- [) H
; r2 @9 a2 R' Y1 v
' W/ A% H/ h* l' T4 M$ @
RVA地址是0001D000  大小是0000154C
' T! f4 I6 _4 [6 O: |$ k6 l2 _
" P  ^! W. ?- Z% I; d好的,我们把这两个输入到import1.6里去
* y- @# b. ^' l: f1 _% ]( C' N
就是在“加载树文件”那上面一点 + |* j% c8 ^8 @! F3 H" ^- j5 e

0 o* f- ^/ V) E7 K6 S6 f8 u, d输入RVA的地址和大小。
) s4 b+ e) E* L8 t- u6 O, ?1 k5 C6 I4 x  H- g# y
点击“获得输入表”
( I' B+ w& n( ]+ T/ g4 V. x7 P$ z& Z2 J1 F: T
然后点击“显示无效的”9 E0 N; r, ?+ f, A' A* z1 f, ~
  t8 F9 ]$ I; E4 g+ B9 g: Z5 }9 c
接着importrec会自动列出% {# l/ v' {; M/ w" {' _5 u, Y
( Q4 R4 ?* G! ]% O) ^% h" [. O
我们把深蓝色的字体  右键   剪切无效的指针
/ |# t/ W0 m/ N5 R: ?! ?" y
- c3 L* F! P* q7 w8 e/ T: E5 f. \* m) ^7 T9 h+ M
最后,我们点“修理dump”
, g- E/ z) D# W& B7 d0 O
9 Z- L* ]5 D. d+ `1 A% |选中我们的木马就可以了
0 z$ ]5 Q' D' ~
  a+ V, \" L. U2 g2 A( P最后我们要用到c32asm
4 Q+ g2 ~2 G: o4 h4 q: f7 k6 f- E2 o2 \) c4 e9 h% ~
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。- B! S1 N' g6 o4 V, B8 i
* J9 `1 e) y  P0 ]/ o- L2 _% ?
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
: }+ R6 R: T+ t9 ]2 W. Z& J% P1 v, e) @( \
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
2 [3 E' a0 C$ L. _' d+ p$ P! w" s( s6 |
我们把马子拖入od的以后,打开了importrec1.6! L5 _6 I* ?9 w8 ~5 N( u

: k+ u6 N  L5 v+ L在选项那里,选择根据序数建造输入表和创建新的IAT2 d2 ^$ f5 E" K: X
! j1 O/ V1 j0 z& h4 M' X: K2 q
如图
1 |7 U3 O( |& c
! ^- i) U0 f# ]0 ^
9 x7 ~9 s" M3 M. X6 s2 A+ ^3 J0 O- H以后的步骤照上面的方法继续就可以了6 u& D8 F; Q! v: W  ]& O  s

; E% P; B# |& f8 ]不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了7 D) W- O5 @6 A1 w- s5 `8 G

* t8 L6 Y8 W1 w( g  h0 i+ g因为kernel32.dll的大小不一样。2 w: h! d, N: f8 Y$ t+ b8 }
  A& r% Y& v( W& `5 u
3.修改originalfirstthunk
, l/ _( `) H, u8 ^* u
( p+ I% Y$ x) L7 P如图所示
6 U5 V4 t  R2 o1 e) f4 m; D' e% I" Z- n6 j- ]1 ]2 ]

9 \, T( i4 G' j) o  E- B9 {我们打开loaderpe,依次点  目录--导入表(后面那个横线)
: s7 {: `- m- E. A- V( _1 a
0 y0 X; ~1 |+ x2 J  C7 H# l我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
  ?, C) i% T# M( u/ I" K, c5 F' S$ P; X# `3 y! Z
我们右键--编辑--把函数后两个00修改为FF
# k8 h9 _" _" d5 }3 P0 N1 |' s1 ^$ x5 [* {* o
这样可以过小红伞查杀。  虽然会出现错误提示
$ c' W/ D1 ~$ T% ]- S5 F$ t7 J( ^. ^8 f/ K4 n
但是不影响木马的功能,不影响上线。
' [* O! l6 X3 C1 D
; ]  q2 t5 `, I& X8 `4.dll后面加20 90法过卡巴查杀
0 p# h7 Q! {, x
' J3 B" v: t1 @# ~- B需要的只是一个c32asm而已,非常简单但却非常有效9 u- }- C1 L: M- X7 o) e
' j1 A* y: l4 m  g( y! _" \
如图: h" a: J0 n2 {8 q& p  [

8 P. ~1 @2 J1 e/ ?! U' D5 K$ H! n9 D$ E/ a) v7 M. v

) N7 m2 S* l, |, d: x# m1 Y我们可以看到,
/ b* l- |/ A. k: A. \- A" i8 y& {! f! c# Y. s; ]: C
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90, @& e$ E, H, Y9 e
" R+ w' _# H7 V9 X  f: C! e  w$ z
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection3 O' e, Z1 ]) b' y( [' }
( ?1 f6 Y- Y7 }4 X
我们只需要在他的所属dll后面加个20 90就可以了
4 l2 L! B* x; _: v# g
) u# ~8 `$ b6 f" V) l1 h6 v卡巴目前还不查杀此免杀方法
: U; X) |! f6 V! n
; v) R; [  y; w/ j2 K  m0 A) V$ H3 ^* R0 }
唧唧歪歪这么多,打字有点累了/ O* h! T! _) `# h

; Q" j# _- I3 u$ R# a# T+ H/ P+ e以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
5 ?. i4 t$ w$ N# Z# S9 |5 Y* _! B
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表