返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,. Z7 k9 r7 ~( n. G

% \* o9 k/ O# j; O% w5 Y( V特拿来分享给大家。. }% w) [0 F* Q- U- l8 C7 a

2 ?7 ^* y# T* E今天我们不提我们国产的那些杀软,真的垃圾的要死,2 }/ L* h' Z5 O# L& d& |
4 l$ @; }& J+ t4 U& W
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
1 K# f' k' j3 r; \5 B: P) ]* A# m7 N
我简单的重建了输入表就把瑞星搞定了,( M( s. g. _2 |8 L# [0 R
5 B& V/ ^8 y# |. g
失去信心了。我曰0 T. q. ^; s' g7 d$ D
. I1 I% H" s, j8 _
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
' x* i8 b/ p9 D1 R5 I* F- p" o; i% f0 D' ^1 Z0 p! q
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。. c: ~) O) _- @  ]9 _. G) ?
/ S, m" V0 y% N
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
( f7 ~% r7 j  F, g/ v' j9 [0 O1 s
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低6 I7 Z* f% g! v- I

+ T0 y5 F* Y$ k2 G/ d- w, c过了以后再调到最高,再做免杀。) o) c$ D3 ?* N' |2 [
/ b% G( \5 A( m5 W5 l
以上是废话,
8 K7 m1 d2 Z9 V- j# z9 t4 t) O- O% Q2 N3 X' b4 [
好了,下面我们来说下常见的免杀输入表方法。
: b7 J2 e5 Q6 |' R1 N1 d8 h$ e% x
一。移位法( S$ A/ o3 a. O# j1 K8 \( z
/ }# q+ p( C! m; v$ ^: }9 u3 @
这个已经过时了,我们的国产杀软及时的跟上了时代,
9 e  z2 U1 M9 A9 e+ Z% [: r
, }- `) o& @+ |移位法在去年过金山和瑞星,还有江民都是可以过的,+ V9 O/ k. T0 X% _: J

. H" K: o$ L! g/ X现在的杀软智能化了,移位么?呵呵 ,追杀你。' q8 m) m( I. q2 e0 Z
3 o, s( N, Y5 M# ~
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
4 M0 D8 f9 }& {2 ^, Q
3 c7 B( r- s5 @$ m! ?  Z二,重建输入表
5 G+ @# a2 y% p/ @: v2 _. b' M( S3 ^4 m, t
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈" H7 \* n" m$ l9 a/ o9 f; E/ N1 u

: O7 r, A1 p, q) S) Z- _$ @1 s. l这里我介绍下," R& W% a" o7 V7 z7 z6 R( x& R

0 r5 W! d4 o% p: p用到工具:
5 c! r" s9 p: ^+ t! _( O$ }importrec1.6
1 `. u7 U) I  ^% O: ]$ p5 G" zod
; n" p9 c) G" M. L2 @7 Ic32asm
; y8 d& I7 H: O4 l' }loaderpe
' f5 e5 N, o; q; U+ c2 Q1 S8 o) `这里我们简单的介绍下,如何重建输入表6 {( i/ j. F4 f3 T

6 w. R( K8 L4 a首先吧文件拖入od,打开inportrec1.62 A4 o9 R2 {4 _9 u
1 y; Z0 G! r# ^/ ]6 v
如图 选择拖入od的程序,% {- e& h/ C. w2 j' a6 N, b* Y$ A
+ u1 f9 V/ u- h0 T' j7 J) c

4 c/ F; F: t! c' |8 V/ R& f7 C这个时候,我们打开loaderpe,# ^% N9 U7 L! `" j! Y" W8 Z

' R6 b) L8 I2 s! A! c! D1 \0 g/ G1 Z拖入我们的木马# O# Z. x1 o/ z) N. t, A
/ p0 I0 V- f! X4 H1 u
选择目录,0 d/ V9 g: \' y7 u. Y

: C! R$ w8 D9 _我们看到导入表这里。。。' H8 |5 W8 N7 }0 L- v- J

  h1 [2 U1 k7 ^8 Q4 F" @8 ?如图:( f, v3 @. A" z' v

! B- z* ?5 L7 k7 ]2 t" b# w* ^, s/ X  ^. q$ J
RVA地址是0001D000  大小是0000154C+ N0 f$ R+ A9 o+ g' K

9 C. q6 B. y' K( l好的,我们把这两个输入到import1.6里去1 f  `+ |: f. V) g  @0 r) ?
) Q4 o6 `( Z) d; ]7 Y/ j
就是在“加载树文件”那上面一点
7 Q0 v- Y6 ^; z% M# i# T6 u. e, M- Z" L% P
输入RVA的地址和大小。  m( y( R. u2 B: |1 F

5 u5 ~3 b/ u! i' u  c9 V点击“获得输入表”' R* E8 o$ e8 Y/ Q$ X! q. `

" N$ W! L) M! \8 B/ z6 \5 O- r然后点击“显示无效的”
/ {; X& c3 o1 Q  R
6 R; _; Q* P( t) t接着importrec会自动列出
* W3 Z2 h2 v' e' {9 N( L+ c0 }/ B" H. f$ y. U# w
我们把深蓝色的字体  右键   剪切无效的指针/ ~& m4 M+ F4 j% o' @
4 [6 |1 }& J" R9 q3 n2 g3 ~: J& G
" E  |2 i- S( i7 c
最后,我们点“修理dump”( S2 K  d+ Q! Y% w+ o; o' b

3 _: r8 [# T8 z7 A6 a2 n选中我们的木马就可以了% s+ U# v0 E% O& j' Z/ n, {

8 i* ~( m, u- }% K# E最后我们要用到c32asm
; q9 b1 L2 @* E0 n8 j
( a4 c8 f# u1 ^( V1 D' o我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
5 D' t; J1 m7 y
6 T+ i4 R) F: [: U( j这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)) g  @7 l# W5 ~! {) E

* O" N" L; P! P" l9 m5 y这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
; g# |7 P! }1 c0 `6 F% f9 D$ S. J$ X0 V9 k
我们把马子拖入od的以后,打开了importrec1.62 t: C# ~  B: H1 u2 o7 z

! K) Z' w+ A1 D- d* Q. @- r在选项那里,选择根据序数建造输入表和创建新的IAT3 i, S' l. r# q# X3 Z( y1 Y+ ~! L9 I
+ G. q3 b8 D9 `1 [" ?
如图% `. P# A! S; M6 m' x0 V

, ^0 r) E/ D6 T
' |" [+ `" y2 |7 j7 v0 c以后的步骤照上面的方法继续就可以了
2 H; \% N9 r1 B2 s, ]) G" O& ]) N( d; j+ X
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了1 K/ T8 g' f2 g' A% V

- f- g4 F( b  k- B4 j' U, N, c因为kernel32.dll的大小不一样。. I- y  Y+ U$ i$ S/ U4 ~, P% y

5 X+ u% O( C/ J5 H- w3.修改originalfirstthunk# Q8 D1 M+ v9 P0 I3 k# `2 ]

" D/ k) B9 j5 A( |$ r1 b如图所示/ D$ {1 r4 c! t+ N9 m1 j
+ L, z. V& L! J1 Q3 U
+ g) g! }$ S% t3 F
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
& X7 N! S( ]% ~4 J6 r: d% p1 h9 }9 X8 ]
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll! @- J  I: M' h. F
0 A, M5 t7 a6 E
我们右键--编辑--把函数后两个00修改为FF2 \. x0 ^, q/ ~

9 F! {( W+ {4 o( I. i这样可以过小红伞查杀。  虽然会出现错误提示
) }% j8 h1 @) I# {
! {8 m: H: x: {2 h( u/ l% ^但是不影响木马的功能,不影响上线。
% l0 W1 [% {; j  j; D; e4 Z; [) M
& P' m3 _8 g. ^% T1 y! l# G4.dll后面加20 90法过卡巴查杀
# V* n4 _4 K% |" `( T5 {9 Z2 |, H3 L
需要的只是一个c32asm而已,非常简单但却非常有效
: Z% N# d; v: t" q% m
, Q, c; ]( [) t% B) q+ c; J' M如图
4 g8 `2 z# u* b. m) z7 m4 Y3 K' B4 E% F. n' D/ Q7 \8 d
7 o/ O. V3 \2 i2 q) Y. G( ^! l+ D( W
2 j9 v" J- ^7 s) t9 r
我们可以看到,
5 E4 A3 n* T2 `4 p/ i- s* T) n& L- ^* Y2 ~! g; l# O# W8 b
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 901 Z  r, D! ?3 Q+ G
+ `" m, Y! M3 K" K5 H
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
; I/ [) f0 S- G  {4 I, u/ a& R; n( E5 ~6 z
' }/ a" s# ]0 U% r  k我们只需要在他的所属dll后面加个20 90就可以了
8 B# ]0 B8 V5 X/ I0 [9 I5 J* t* ?+ a  C  r1 C4 Z" W! L
卡巴目前还不查杀此免杀方法& q9 C/ j  ]: F4 w5 ~# {' c& W+ |( B- T
) B5 P  K% t- a" A: |# s% e

; s6 r; c. H& Z2 k唧唧歪歪这么多,打字有点累了
* X! J6 g. [% j& s* R3 K6 O( B$ V2 H6 R) \
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。4 P$ F0 z$ B6 n( K# L6 o
+ B! R" g: t. E! G7 p' K
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表