返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
6 o8 F$ m# P" t% R- K/ y1 _- a8 F6 G5 B' S1 D
特拿来分享给大家。
! Y* _6 m- ^; t9 b0 f1 }5 E" C& m9 w/ O  e
今天我们不提我们国产的那些杀软,真的垃圾的要死,  I1 q9 o& R8 x& u3 `4 e/ A
% B) _6 y; |8 Z. `, ]$ O+ m. L
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表& A! ^, P$ V* l: ^8 d( F
' J4 L8 S4 n3 S- Z- p
我简单的重建了输入表就把瑞星搞定了,
5 m* ]1 W& G  B" P# F* a! _3 v; G) S9 ^5 o/ f
失去信心了。我曰5 P' j4 a7 _6 }; [, j1 R* L* u6 @

. T3 @4 m4 @" \3 W2 E+ r# H今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
1 m) F; Y9 w, l7 c
& P, V, d9 E, T( V3 t首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
% \8 e+ t7 O3 q- n6 s( k, p3 L  g0 ~, |- ~3 o- `8 J
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
/ ^: B' ]" z4 ]8 e' C2 f& k% b+ D9 c: W4 i8 l$ o$ m/ Y  ?
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
- k2 p; j' u+ [
' Y- z7 D+ {! l( a& r- C过了以后再调到最高,再做免杀。$ u; r) T0 y* i5 N8 _1 [! V% A  e

5 `7 P* [1 ^! e  L以上是废话,2 t/ V; n7 U/ R4 L9 b) b& J
; o6 U0 u- y3 a8 O
好了,下面我们来说下常见的免杀输入表方法。
5 h* ~  n4 t+ H( u' j6 v* F
6 Z8 L& o2 [/ i4 T8 E% l一。移位法5 J" B! c3 E7 D* a4 h

: ~& h5 [' z! q5 J" K. q" j这个已经过时了,我们的国产杀软及时的跟上了时代,1 M. u* ?8 ?, }& p! k9 Q. F

. z6 f  Y) H6 R移位法在去年过金山和瑞星,还有江民都是可以过的,
5 \7 V% V( d9 S4 y: F7 I: \* D$ q: C4 N! L
现在的杀软智能化了,移位么?呵呵 ,追杀你。
0 F+ K- G2 r+ G- n+ E3 ?1 p/ z# d- X5 d0 `1 z
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。( q- e: N6 x( o; {! u8 i

; x6 x+ u! e1 l- T0 Q, ~二,重建输入表- ?2 x" U( C0 R  r+ F; Q
* C4 w7 c# ^& G" _+ Q/ N
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
" F* ]& {* B  t- u4 N- w
- p& L( o8 \' d8 R8 c1 g& Q这里我介绍下,; E$ g- ~0 b4 M. L& {8 d& J

8 T) `( E. Z, V  V( w2 \* f/ A用到工具:
& E) j, D( F& g$ _5 oimportrec1.66 e: @9 _8 F- s( v$ E* |3 Y
od
3 U5 o/ y0 b0 B; ^c32asm
+ w& g8 j( d( a0 G6 F, Iloaderpe" v" ?* }( O: T- O3 r7 ]
这里我们简单的介绍下,如何重建输入表
( U; O3 T; q# R5 q6 T% @. ]3 u8 J
5 h+ \' q4 ^$ L  c2 G+ m% @: J首先吧文件拖入od,打开inportrec1.6
6 H; q/ I" V2 M# K; Q( h7 D
, S' k2 B1 }# e. c1 F5 F如图 选择拖入od的程序,. s9 e" [, t4 x7 X; R( t  ?

& Y7 `3 R1 [( \8 L3 j' u) Y5 l5 n
这个时候,我们打开loaderpe,& K1 _6 X! O6 z- G) v8 b' ^: F6 @
) u0 Q, z' n. w0 D
拖入我们的木马
1 \! p: r% e8 D1 P: l  g4 |" z5 l2 v5 v6 ~
选择目录,
5 m& ?: k- i! t/ T' }1 d: U8 k0 u. e: m3 s
我们看到导入表这里。。。
* ^) D# S6 O/ L/ C: W- F8 L  Q/ {$ L
如图:- S1 A7 H9 X& ]' j5 ]

  z) j( ]8 c2 I/ M, X0 X# }/ Y) Z( |( g  K& H9 y  {+ g& I
RVA地址是0001D000  大小是0000154C: @+ u$ x5 r( S) O, E

9 w' p- ]. Z! l, l; u好的,我们把这两个输入到import1.6里去9 V8 V. [8 \$ E2 M
4 l0 }! C% ^( ^9 }+ K. n
就是在“加载树文件”那上面一点
0 O; b0 l# W- N" ]. m1 j7 A+ X$ S( F- j2 ?
输入RVA的地址和大小。8 h# s/ c, H& o

6 b; m/ [6 l, h" D5 X- z0 ~点击“获得输入表”' G' i( |* z& O) ~

$ q& R( O. f( \' [然后点击“显示无效的”
; B7 J& I( [4 s# b+ X2 d* o# o% }1 q5 B8 K; @) P
接着importrec会自动列出
/ h) j( q. P4 _/ t7 `* O8 X  u% ^6 V
我们把深蓝色的字体  右键   剪切无效的指针
3 S8 o. e; P" l. k
- b1 G* |1 Q( J! [+ r/ \( L5 E: ?# f
最后,我们点“修理dump”
1 q" n" E; h' O/ T: S1 B( B1 `; G. u# ]1 A
选中我们的木马就可以了# {3 u' `3 r) {% [# l! b7 N. E

2 r6 F* G3 o! Q5 c- ?最后我们要用到c32asm9 G* [& x* ]% _; p# B% X6 ]# Y0 u" s& m
4 F. A! q; Q% j- E! X. K
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。; ?0 l6 c8 S# x* Y- n+ l

  i" q8 q0 c' j1 L! s这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话); A- O5 c& C% g3 l8 H
+ E+ y; y- a! k8 F3 b% E+ \* [2 q
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
- h+ u& }8 w* X: R) ^. F$ _  r( m$ p* Y( y/ e
我们把马子拖入od的以后,打开了importrec1.6
# L3 T& I% E+ t1 S- T6 e$ r: b/ G9 j; ~- w' j' q1 [
在选项那里,选择根据序数建造输入表和创建新的IAT
0 a" X$ D# o5 w. o( q. Y/ T: `& I, r0 ~
如图
& K! M2 @4 [$ ^- X9 g4 w$ b' O
; U& f) ]7 f+ c+ W; F
5 B' q/ j5 S# t6 o) I3 i5 q' N以后的步骤照上面的方法继续就可以了- c/ u. N' F! N( \4 O6 t

$ }# f+ y5 R3 y9 t  k不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
" [+ h1 ~0 w: C0 H, B" @' b
; k  B% x5 h% E; R因为kernel32.dll的大小不一样。4 ?8 M) m7 W: |. h8 ?1 B

, x0 ?1 b9 h4 ^0 C- l4 k4 t- @3.修改originalfirstthunk. N; e# N/ c9 O
* C9 f8 X& n$ w. i
如图所示% a5 e% h- T8 K( H5 w
) _2 N! Z) C( p) S$ S. h6 b; x
, H8 x6 D. E2 t* d. |
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
4 T; Y: P% ]# l6 A  ^
0 Z7 a$ A" g6 M' {4 F( `# a6 `% a( C我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll3 v( _& |8 j. z9 A. H7 M
* F% w5 j3 }+ I+ X* Y
我们右键--编辑--把函数后两个00修改为FF
! ?- B' h! C/ N7 G+ t
% @# P( c/ p* `' T% P: f这样可以过小红伞查杀。  虽然会出现错误提示! _8 t4 E1 T% e( G) w4 q* ~

' D, Q$ G7 u) R, b" }) x但是不影响木马的功能,不影响上线。
: M; K# a9 s' s/ s% N) }0 |0 w, a  T6 Z# O" \
4.dll后面加20 90法过卡巴查杀- ]6 G- P' K9 r8 d" b7 I" c
/ Y4 l6 g6 S+ A) g
需要的只是一个c32asm而已,非常简单但却非常有效$ I; z( N4 D! S, }0 U% a) p
( k: m1 a/ `$ d. K
如图
& }3 T& K* _* l; B2 [, T0 |. f( Y0 J( d$ K/ O' u3 e

9 a0 Y7 j+ `7 E3 ]* U. r$ Y4 l- K1 j, }) j$ ?6 [$ f$ o
我们可以看到,
5 L1 i5 g, @* V, N0 y' }$ A2 y" X- b0 n0 i
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90( p% S) X( F9 S5 g+ w% b4 U4 u
; I3 [' E4 O. m
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
; }# F2 j1 M, d  x, Q9 w: o5 Y: a3 l
我们只需要在他的所属dll后面加个20 90就可以了  s, E8 V3 m8 ]7 n" l, u

8 d+ h. e. T9 X6 D" d) g卡巴目前还不查杀此免杀方法
! G+ W* p# \% B. P. Z
; g0 d3 j# Q3 v6 J( z
) C, s$ p3 n, }- W3 r2 d唧唧歪歪这么多,打字有点累了
! @4 M" j7 B/ b9 v6 {3 Z8 i' B, q! K* d' D6 T
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。, u3 ]: p- G4 o* A0 J

* }/ R1 k! B) i9 H7 q7 b9 o) V- g[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表