返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,/ k- }. Y! ~5 L% \+ @
- _- J0 w6 b* L6 k! U0 ^
特拿来分享给大家。
! U$ e  Q6 Z: t4 G) X
6 s3 t2 Y3 o& _1 H9 J& k今天我们不提我们国产的那些杀软,真的垃圾的要死,! p: ~+ x* R: \  p! e& q! Z$ \" M
: s! v7 u! b1 z$ I5 P( S+ ~
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表( h; [1 i) `& x0 q. S

+ y- z8 U$ R* Q* ~0 ^8 E; i; X我简单的重建了输入表就把瑞星搞定了,! ]2 W/ j2 @! K/ p8 Q
* s9 J4 X& k9 g$ Y& d5 u) h% y* P
失去信心了。我曰
/ t0 P( {  d" i8 P& X! g- t- a6 D4 V4 T1 I9 C- O/ d7 X9 c
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。4 D, }: i* x; [% J! Y
* s; Y# C/ ^. d" k4 ~+ d+ q
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
3 U" Q7 Q" r5 T2 W$ V9 A5 n
! P7 K. u( o/ C外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
; h: o9 u' Q) D, o9 o" |& k0 E
: K0 @, W& I$ M  \$ n3 v$ `高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
7 J$ q9 b0 Q1 F  I: {- Y8 ?0 P1 v2 C, j/ i
过了以后再调到最高,再做免杀。
# r$ z( @6 h" S4 R0 i* @4 h
) C5 {! {$ v- N& X以上是废话,
) k. `( }; V8 S( N/ s. j! A1 s  G/ V2 K) t5 a( V
好了,下面我们来说下常见的免杀输入表方法。
% h5 D4 Q0 t: h5 g& k) e- H' Y! r. F
一。移位法
! q; j, P7 `) O( a6 ]9 g
( h/ E  D; j. z$ @这个已经过时了,我们的国产杀软及时的跟上了时代,
7 I0 N. X  Q4 W4 v
) Z0 [: w( e* T. [7 c! [) y移位法在去年过金山和瑞星,还有江民都是可以过的,
- R3 L& v" r, \' F' v6 L. g' n& R) J: R4 X6 b9 Z
现在的杀软智能化了,移位么?呵呵 ,追杀你。$ V: K0 ~7 }$ m# s2 M4 s! K

( ]4 Z6 C  t) r5 ~: j1 l) u如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
" r/ Z' K& Y+ i, ^- E: {0 h8 j  M2 K/ W4 q/ P, H& y
二,重建输入表
# D* M% [1 c* g3 ^
6 ^2 w* y" n4 g+ [, H4 g效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈. U& y. [+ u7 z1 {9 ]: y5 t- T( c
& m# D5 V; a7 w* J! b
这里我介绍下,2 x2 c' i, g6 R7 k6 y9 [
' Z& ?5 j. ?; v- C3 n. t
用到工具:
' m& W1 ~$ k7 f9 mimportrec1.6- p: d* {* ^5 v  a
od/ L# h, w5 ^1 {9 T! l. `& u' V
c32asm
8 b& \0 l- Y, s0 \8 r, L* ploaderpe
3 j8 u4 u; j9 k+ e1 w1 x5 k这里我们简单的介绍下,如何重建输入表& _2 u  E* p4 C4 x2 [' y

' j, E0 m' H; P4 }8 @: K首先吧文件拖入od,打开inportrec1.6
% k% U6 k' W$ p, z1 \
7 x) D: @! o2 b' C8 {如图 选择拖入od的程序,: r/ N. q+ ^0 U) t  t2 e. t4 [

8 B- V' _5 o; `, @6 l+ C( k* {0 l2 u; B
这个时候,我们打开loaderpe,$ y" {- L/ }. l8 M2 \7 T
& {0 Z5 k& P2 R. P0 g1 ~8 @
拖入我们的木马
6 _+ y' e7 o* S8 Y
/ d' k/ i1 T( c$ E$ O- t选择目录,
  ?0 L5 [; Y$ Q. ?) C1 d/ l: [. W4 b* }1 f, s
我们看到导入表这里。。。. O) k* c8 r) v, B& c
2 `) W! ^6 ?3 Z, e* H7 A
如图:& L2 Z  e, P- y6 B% [* O1 v
0 l6 E4 }# [8 W1 d5 @4 r

# _' z' @1 C5 U1 {) {5 Q9 e) |4 |RVA地址是0001D000  大小是0000154C
. t' h4 I; \7 t3 e  E8 e( t. S7 g/ x4 ^6 w* W5 C) o$ I
好的,我们把这两个输入到import1.6里去
# }  }7 _9 B7 n& ~( F
5 s! s& k2 Z, j+ m, i+ U就是在“加载树文件”那上面一点
8 V2 U1 v9 e$ A, F( l0 P8 X2 W/ ~; x( g
输入RVA的地址和大小。  L( t( T3 ]9 U5 J
( k. O0 e- _' H( s  Z
点击“获得输入表”! x6 z9 S$ u# k

; m/ i& Y" Y8 i7 Y7 q" i然后点击“显示无效的”
# Y) g6 S: }0 S  L& T! d/ \- V6 i1 M& ^5 \' Y
接着importrec会自动列出- `$ c# l. }. M* W4 @  U

! k1 |. }+ j* t# H% i我们把深蓝色的字体  右键   剪切无效的指针' g9 P/ _+ y/ Q
5 O4 F0 T7 {0 U, H; m
, P6 U4 q4 L7 N1 c
最后,我们点“修理dump”( J4 Y* t0 c- r& v
  u6 p2 y8 o2 b( C
选中我们的木马就可以了4 A0 ]2 u1 C' d$ N8 w. u6 @9 i
7 z8 R8 I% |  e$ }5 m
最后我们要用到c32asm
4 P- C8 M, |; ]; ]; a& n
# l7 U) x, ^" }我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。# n' x* ]6 j$ U) ?# N+ K) I

3 ^% G! h) a& B9 S* I5 x这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话); j' f' b8 n7 C! H9 |  q% h' k4 F& A( j

( A/ _0 e0 }/ A& U% F这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
, U: c$ `, }' [7 o" h' {( M- H: o  A
% `# O" ^+ V  T4 r我们把马子拖入od的以后,打开了importrec1.6
: d/ Q  b8 y9 ^( |0 R) J, Y4 C% B- x) O/ b
在选项那里,选择根据序数建造输入表和创建新的IAT
+ M! P" M+ Q4 F1 h- D0 e/ h5 D- R& c
如图; h, o  v% i7 i& S
. B, y2 _  t% q" ~0 h

0 C1 N; y' n0 m7 U0 k! x7 U+ w以后的步骤照上面的方法继续就可以了
6 J9 |; @: c' b& p; }$ k% W) [
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
* c, Z# x4 C4 @2 q/ E
) E! q7 y% ]& e, N) Y因为kernel32.dll的大小不一样。
3 W1 `& v0 y4 r% x) z) u5 }
) {! P9 \3 X' u; P  {8 o4 q# c3.修改originalfirstthunk
4 q+ \6 V) a- G' _5 x+ H, ^  y0 h7 s9 n
如图所示9 ?" f) f4 H1 N

; K9 D* Y+ F+ V0 X" K7 m" m
" I( P" x( n" a- m3 c我们打开loaderpe,依次点  目录--导入表(后面那个横线)
7 ^8 [6 U  ~- ~; C2 z7 C9 M- d0 B+ u
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
1 N2 l4 T5 b$ G0 y/ K) C* N
0 c, D! H* Y/ {' G. W" y我们右键--编辑--把函数后两个00修改为FF
: R+ h2 ~0 r3 H9 N' k& ?3 g9 I7 g9 p, X
这样可以过小红伞查杀。  虽然会出现错误提示
& x! p* n$ k9 j! C* _
7 C4 O! Y7 A& C. Z5 v但是不影响木马的功能,不影响上线。
) ~% q" o2 Z* `1 \) Z
$ D" X$ o$ a" A1 }4 j# f2 X( R' E6 D4.dll后面加20 90法过卡巴查杀
& L$ d) {3 h6 j9 A# F
; ~- b( A  N7 W1 U0 }& S3 P- W需要的只是一个c32asm而已,非常简单但却非常有效: r# A5 ~7 j/ P  T+ y' ]; S# G

- }% s* x- @( m% K! y7 L2 y如图
: s) J; F  w  o4 Y9 W0 h
9 l* C1 ~8 b0 C3 z7 o# l3 i3 ^; I  O+ x5 F" v

2 U7 O' R9 D( \* [/ C$ F* e- B6 X4 T我们可以看到,
; j9 }; D$ m0 w8 B% \  S
; R/ K! a3 a- K; X2 C" O% W在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90. y0 n  ~) F) M

! |8 n+ n* F* Q; F8 h" z5 s, r& E这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection' Q" Y( p. ~, U* ~
/ A' G' w- m2 I4 _6 C6 h3 y
我们只需要在他的所属dll后面加个20 90就可以了3 W! n1 N) k$ [/ i8 w+ a& \/ j% ~
- _' N- X' C5 m0 l
卡巴目前还不查杀此免杀方法* p, _; s; n# O7 g

9 Z6 L3 d8 ~$ @- x5 v$ ^
% O( b. x/ a  {& L1 g唧唧歪歪这么多,打字有点累了0 Y  \6 S7 S3 u/ t' Q
9 U+ W. a/ j* }/ z; m
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。' c/ J2 ~% ]& N- ]% ]. G! j! p
& Y. R. k& {1 s4 v" Y0 \4 Y
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表