返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,, C: k0 B. F8 k7 h

8 v: W' r* i$ ]: `. E特拿来分享给大家。0 k/ q- ?. P+ H3 h

# W  ?3 z9 |, R* _" H! G7 n) t8 h今天我们不提我们国产的那些杀软,真的垃圾的要死,, K1 F0 g2 r8 P9 w0 x6 V
. L0 Q$ r" I$ l. S6 w
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表/ K( B  w" Z0 w' l1 f8 e, a
5 D# Q* A( ^3 h
我简单的重建了输入表就把瑞星搞定了,3 p2 y& Y2 n. A

" Y1 Q8 `/ h& a& a$ m失去信心了。我曰! @. C' i: E& r6 a5 @& T
( P0 Q( r- ^; |$ v6 x; T( _* _
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。3 f& a& s$ S6 l- D

" e" F8 {) G+ `$ W* W9 U首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
) L( y+ M, U( o2 P  b, f7 J6 |6 x: I7 W4 r! M9 |2 B
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
' c+ ?6 ]% a2 [/ e; I% Y. H' D( m- P$ \) ]
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
, |. b  R  ]: }7 g- I  h/ [0 ]" L) H! [+ ~# \
过了以后再调到最高,再做免杀。' {7 U, @( ?! u" s4 _
! _0 \: w1 q' m8 q$ {+ H; Y0 P
以上是废话,
% J# K( y2 J3 G% c- @: h% K! ~) p& }3 b2 \* F* g, _7 I2 |
好了,下面我们来说下常见的免杀输入表方法。5 Z8 T- v5 u2 Q& I' O

& c4 Q; c0 i+ ~一。移位法
/ p1 u! [+ {3 o+ a. b& {1 V! H, z5 e* i* W+ J) k
这个已经过时了,我们的国产杀软及时的跟上了时代,, V* C  ~5 a: E! A, S  \

5 C; G* [# l, F" g6 W, {3 A移位法在去年过金山和瑞星,还有江民都是可以过的,$ X# T$ A% B' G+ ?9 n
$ G. z2 D: e! F9 s2 F
现在的杀软智能化了,移位么?呵呵 ,追杀你。
* ]# ^; u7 ?$ [
0 E# D7 G8 Z+ _- \' g1 k如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。, z& H' c3 c+ I* m; [# N5 `
# i& V7 r% Y; k5 a3 h& H- Q9 o
二,重建输入表1 d" D1 u, a" n: R6 E3 Q

$ |  `) U+ C* O效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈" a1 `8 h& V4 t: d

3 ]# a: M% e7 Y8 R8 R5 O这里我介绍下,
  M; _. p, w5 ?4 i5 a' |% T" T" I
用到工具:! U: w. K$ g1 P  ^- y* B2 l2 H
importrec1.6: L! |+ d- V5 D( u# u. l
od
0 W- I% _' m: r0 v; ]7 S1 y7 yc32asm
4 T: D* V' ~. ]' ]9 n) O( B4 e. yloaderpe8 k/ E, f8 V1 A; |% U: q' ~* k) n
这里我们简单的介绍下,如何重建输入表
9 i( z+ F* q7 t& [; b/ }
# z$ Y2 o9 u, J( A  M首先吧文件拖入od,打开inportrec1.6
5 T0 k7 u: ^# G1 c8 U
' Y" Z0 \5 G4 c+ J+ O6 t% P如图 选择拖入od的程序,
* e2 u& z. U' t- L* A, j  s5 Q$ [1 @- f# ?' ?

# Q+ X# R, Y6 \% z& n$ u- H6 ?5 B% @这个时候,我们打开loaderpe,
8 [  q3 n$ w* x0 q
; X; A: }( y( l: ^) R6 {  M拖入我们的木马# k/ `% R8 b+ f+ C% G+ {/ z

8 y5 n' u  g- J" @! Q选择目录,
# S; k7 [4 b/ R$ j4 U/ Z
/ h! d" ]3 J4 |! i* B' H: v我们看到导入表这里。。。
% ^. X) L& e/ m5 k
' H3 B9 H; }' H# v如图:+ K9 ~/ J& ~- L! r# c, i9 [: ~

( Y1 t5 q: Z1 m9 i, B5 j! x9 V# R6 [* }/ D
RVA地址是0001D000  大小是0000154C
- M& c: G+ n3 y6 D6 q9 F5 b# b. N0 r5 a: r
好的,我们把这两个输入到import1.6里去" K" d- K1 S/ N& g

7 i6 p$ @% b9 e: N1 j# ]就是在“加载树文件”那上面一点
0 B8 I' M* A) v& r3 _0 g
4 ]  c$ i4 d" e9 ~6 r8 Q* s* ?输入RVA的地址和大小。) F5 W' w4 |: s* j# x
) c* V6 d3 N! b  W! X
点击“获得输入表”
2 a" S( [8 ^# |7 o
' I7 [6 Q- @: G6 ]) E5 m. B5 b然后点击“显示无效的”
: S& ^3 T) I/ b0 m8 S& j8 p+ h2 }# e/ L1 B9 j
接着importrec会自动列出
0 s+ t2 H  R: `* ~9 ?# Q( k+ `5 V) g$ m' M
我们把深蓝色的字体  右键   剪切无效的指针
) p1 ^# q3 ?* F) f9 l7 R6 l- ^: r
( k$ Z8 F9 v- ^8 v
. {7 E( n& @2 u  h2 A最后,我们点“修理dump”
, k# K/ M6 ]3 ~: [3 j, p9 r% F5 C# A& A4 l. |- w- ]
选中我们的木马就可以了: {& T; P* y2 `6 u& r

& X) W5 ]" D2 i& M最后我们要用到c32asm
( h6 _3 N2 y% g- a7 B3 V2 w
- k2 Z3 T: N3 I4 |' Y( A我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
; V% b/ ~) [9 i+ I
( B, \' p, G( M( B这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
) d5 D8 C8 w6 Y  j: M$ B9 ]5 U2 b/ Q$ m9 F* z3 ~
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤," s% a2 O; q5 p5 j+ c5 G

* y9 u2 K$ ~6 Y6 p我们把马子拖入od的以后,打开了importrec1.6
8 ]3 L" l) u* c9 Y5 S7 a7 e
* \# [( ?. @! r& [5 G) |在选项那里,选择根据序数建造输入表和创建新的IAT
# O: o2 U" [! g  |( O8 M  B+ j. J) B
% I0 e; B; `  w如图, l* @! x6 s- S( l& B. g6 A
) H& e( X1 a) N8 E5 |

7 w$ S1 I0 Y. `9 H- |以后的步骤照上面的方法继续就可以了
9 t0 K% P3 U5 T' L; Q7 M& p& V4 O- _: s" {
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了2 u5 Z6 \) n# q% j+ r1 }
2 v, r, _) I8 m+ y* f3 u0 o( \
因为kernel32.dll的大小不一样。& o% S# d' C4 w' ]; s+ C, C

" P% p1 q) K$ f5 Z; U, r) _3.修改originalfirstthunk, `" ^* o( o& M# r/ ~

9 d- J# ?2 L  H如图所示0 q+ J* T( [* I+ t6 l+ z

4 Y8 f: i5 V$ q- }0 z+ N3 t- M6 I; z8 C2 \# g3 I5 [+ G1 N: y' M
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
  t. K$ q, U0 F2 e
6 i' p* p: T, A3 k我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll6 Z! g. f0 I6 J6 L6 b, \- u9 [% ]

; B$ s7 l; d' l+ v& m我们右键--编辑--把函数后两个00修改为FF7 z! M  J8 ^4 l6 v6 E6 }
+ ~0 }" N0 o8 D: E
这样可以过小红伞查杀。  虽然会出现错误提示
" _$ E- C* {! F7 c( t' B$ d: N- J) Y1 J! z; e! k5 F. U  T
但是不影响木马的功能,不影响上线。
* a- g& A2 E" Y: L0 D4 ]+ F; P
) ?/ g; l* l7 M( g4.dll后面加20 90法过卡巴查杀, L# F5 g2 s" p4 \" ?1 @

, x2 o+ y3 z: Z/ K, q9 N" ^5 h0 b需要的只是一个c32asm而已,非常简单但却非常有效; b; @0 J" L" l& }
3 C: A4 k% @9 T
如图3 ^& c1 l9 Z0 g" E
* B" q% e0 R  R" t( |) E
+ `# l$ p5 B3 V; w

- D' Q: D7 H2 h我们可以看到,
% o- t/ ^  I% e7 ], A2 M0 {$ j  g6 v: X5 f) B9 E0 v
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
- f4 ^0 D+ R2 N, M' B' T6 f+ v
- [" S, k$ s: X7 q1 @! v这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection  A# o3 {+ i- J. k8 V) A
- X7 d( _5 f$ A; `( N8 g
我们只需要在他的所属dll后面加个20 90就可以了
( C$ b$ ~) z. t  |2 ]# H' _) Y
/ s4 t1 x# F& }" n/ A卡巴目前还不查杀此免杀方法
# Y. z# p; i& d2 b! y7 U/ f" m. }4 d' L2 z1 C

  L. R! r4 l. y2 R4 G' u唧唧歪歪这么多,打字有点累了  N1 r+ [2 F& f2 a1 ]
5 t+ S$ _+ D9 y' w! J
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
8 l' I" y6 y9 Y) g3 g- p6 Z: D  C9 o0 _6 E& j7 E
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表