返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
3 P( K. r3 t) b" u7 j8 \0 b$ X  F
# G! m' k2 C; ]% E  E# U1 x, @特拿来分享给大家。& T+ w0 i, b) z4 k8 e! H
% c$ k2 W* z1 W* n# ~1 H8 f. L6 U
今天我们不提我们国产的那些杀软,真的垃圾的要死,9 D0 S5 [' J2 @& [, t& q, x5 M
8 z8 N$ Y9 \% [# b
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
7 n$ `3 Q1 p- M' Q7 q2 y
, a: {7 h- q) S  u3 {& i6 [我简单的重建了输入表就把瑞星搞定了,. t: \8 K9 F  [% Y! R3 r* s/ w6 R
8 L' `! ?/ G. m: A( ~" u4 E
失去信心了。我曰
; `5 i) q* `  u# \, b" }6 h
3 X: x8 _8 V: ~) J; H! A今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。8 I' p1 r" V# o; k2 N

# H2 X# L/ }- j) E; j2 |首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。# \: R9 @& t1 S& O- A0 X
  Y# p( Q& Z& @" ^% {: h
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
/ b. i4 j: T0 V/ l5 b! H' ~; R( B+ t( E" g2 h# z0 z( l* P
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低5 {: k$ {) g" U0 Z6 s) g

' I- }$ h5 g# g6 O0 r过了以后再调到最高,再做免杀。
: \, o2 C) I5 L, U
: I1 m6 ^9 l: J4 C7 j+ B2 U以上是废话,
2 Z) G4 [6 k0 Q/ m; Q! f* s  w9 \- f" p' m4 p+ ]1 A
好了,下面我们来说下常见的免杀输入表方法。7 `" _4 b8 a8 w$ U

! w  _. W- Z: O6 m. ~* F; ~3 l& E一。移位法
* P: T6 X2 a9 x6 t0 q! m. m2 A, ~; r' i4 W- G2 m* e0 |$ E! c# ]3 h
这个已经过时了,我们的国产杀软及时的跟上了时代,
7 V, H1 M! e+ J; l. C. {
) ^4 b1 `2 [* T( \0 [移位法在去年过金山和瑞星,还有江民都是可以过的,
7 j* \# e# h& q8 K: R, R, ?/ G3 j0 `% e8 H3 R( a+ r  ?% D/ l3 Z' c
现在的杀软智能化了,移位么?呵呵 ,追杀你。
5 M  e( k; N( ]* T- ^& }& h5 g7 T0 p# I0 O, a  g/ o. g  P+ i
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
" S1 Y- v/ Q! [) r, D. \2 L6 U8 X- H" W" Z( a' c8 ?; C
二,重建输入表
0 O/ F1 V' c1 ?; `; z6 U
% [9 {* w& f+ r效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈2 E( K, \0 O0 Y3 s. Q+ x

, q/ S' A- A6 A这里我介绍下,/ a% D+ r0 d2 {. q/ _7 L
+ z+ V! V4 v9 m/ _. f
用到工具:
0 w% o+ W. y% ]: @importrec1.6
6 o  @/ S, E$ t( Pod
6 U7 H' i$ a# s( Fc32asm
- }) j( U# |* x3 Aloaderpe
- p% ~9 G. x8 ~这里我们简单的介绍下,如何重建输入表
1 x5 F& p& ~  U( t. }7 y
2 j. R/ f! g1 o! ^3 r. H9 l首先吧文件拖入od,打开inportrec1.6
4 p9 n& b$ j4 `2 m1 u5 Q% n/ e$ Z# F+ R* ?9 V5 a8 Z
如图 选择拖入od的程序,8 v: k% B. L- C: \, W

4 g( ]9 [8 b$ k7 q: i
: @& ~- A& v( i' h这个时候,我们打开loaderpe,
8 z& P- ]( d5 u7 p* p! \- \  B# U4 l1 b, j/ T
拖入我们的木马0 j' `( B0 C5 K4 g/ g& Q- E

; j2 m6 O- D% ^$ ]选择目录,
' A* x) @7 y2 [) y% C8 N4 i4 n5 s/ t7 E+ ~( u6 x3 K. r5 ~
我们看到导入表这里。。。
' G% h6 J- Z8 \8 ]4 S5 D# c: B- [1 c1 V: s# Q
如图:5 @, ^3 [9 @' v0 H

* k7 u. f# k: {3 `
' R& y' S- J1 iRVA地址是0001D000  大小是0000154C
3 I* W( u5 n; z  ~) d3 Z
# _3 v: U. S$ P& X! ^9 q好的,我们把这两个输入到import1.6里去6 `# g2 e9 I) V+ S
$ j  \1 w$ Z3 v+ g) q
就是在“加载树文件”那上面一点
, o9 I3 Y( n# X* B' e4 I3 c, ^
8 r. ]+ f0 W' z& M输入RVA的地址和大小。1 O' w9 ]; a# g; e) K% J$ x& B
: v1 w* {1 D: h' `& m' h
点击“获得输入表”
$ K9 B$ b+ ^: T4 U+ W9 y; P
5 c: ?: ]* c9 Y0 X: @3 u5 d* I然后点击“显示无效的”  Q! g2 c6 c6 @
. N) c% [1 Z) `$ _. V. n2 k5 r- x- l. x
接着importrec会自动列出. u9 u( Q7 c3 {) u8 I' n

8 k. \4 v0 i; x1 L- G3 d5 M# J$ }我们把深蓝色的字体  右键   剪切无效的指针: e* F3 S' L$ p8 e0 p

8 D% g( }2 E) ]9 }' y
# |8 f" X1 v- F1 y最后,我们点“修理dump”
1 b: ^  N4 Z3 g" v0 v. I, W  Z3 T# q/ o1 L- k- S
选中我们的木马就可以了0 N& e4 I4 [& u# G1 x6 r9 {, L8 D. H
( g* j5 [4 G  G4 }% i6 r
最后我们要用到c32asm
* c. w  s( z4 ~" z
- J1 v9 g; k! t" M我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
2 [' p/ J) H: a4 A6 v
- P$ U3 l0 ]! I0 W4 F这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)) k5 O6 m* S" v
7 W$ `; f3 [/ m3 Z7 ~, {, N
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,) n0 K" K  E* J( r# A

6 \" B* w3 H/ l5 B1 N! M  ?我们把马子拖入od的以后,打开了importrec1.60 e/ A/ T1 B  }# p

( a* V; ~& `; C, y在选项那里,选择根据序数建造输入表和创建新的IAT
3 `, E+ Y. a6 h) P( n4 e' w* t% @, i9 h4 M6 L) c0 c  X! |6 j* X3 T4 f
如图( d& B- T& V' s1 S. P
$ l/ |* f# \" s' M

. p5 X! p2 b! {9 S- \  o0 v9 |2 d8 O以后的步骤照上面的方法继续就可以了
3 T! |! k7 f2 }6 ^9 G
. B* \! j+ M0 x9 b( ~不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
, k% W& w3 e6 D" [% b% b/ d" f9 y
因为kernel32.dll的大小不一样。5 p; d3 U8 o! N" m0 N

% _" @  T: D) f0 R+ w+ |+ T+ z6 O3.修改originalfirstthunk
+ l) r2 H: ]& ]9 F6 Y; q5 m, H: |6 Q# {4 l  v8 p" w& @9 q! J
如图所示
5 n$ |9 W/ O& p3 W- }1 ?3 O+ z, i" B' d: s

6 e4 M. b9 q1 Y2 v1 Y我们打开loaderpe,依次点  目录--导入表(后面那个横线)
6 N$ Y3 [8 c* Q. g- e9 }: C! m( v5 Q5 F4 `9 E. C; \( P* f, \
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll8 N5 t5 ~8 p0 J/ }& h" z
$ C* S% l' _: k: z/ ~1 x2 \
我们右键--编辑--把函数后两个00修改为FF* h/ V& _1 }( E" q! O0 l/ y8 K2 e! r

  I6 [  _' g3 l4 T这样可以过小红伞查杀。  虽然会出现错误提示$ M2 K2 @" S' Q& v: ~( r
7 k* \! ]% n- G6 T2 j, S  e" f# ]
但是不影响木马的功能,不影响上线。
4 v! Q" O' H- G% f1 [9 l* e( w
# [% G9 O8 I: P/ D+ X4.dll后面加20 90法过卡巴查杀
4 S5 b, ]3 y+ m: z. d* T8 R+ ?( |4 H
需要的只是一个c32asm而已,非常简单但却非常有效
# Z6 U: z4 D5 ]+ {8 @+ ^1 p! O% L* ]! h( h
如图; R$ ?  U' f6 U" W7 {& u
5 N( ?: Q- U+ b1 T$ I# Z
4 z. Y; j! V# K4 z6 J

# `5 n! L5 d' c: [: K8 `" _  P我们可以看到,! h" X* k' d/ J7 p2 M" _9 z! K
9 E0 Z- W$ o+ _' j5 `+ N) n* P
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 903 T# x3 M' x. P$ `

/ T" l  U. N9 P6 q& h这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection6 I0 |3 ^  q7 X+ a; R
% B$ j+ R! }: X0 U* ^2 V) u
我们只需要在他的所属dll后面加个20 90就可以了- |! X6 I- I3 K' K, f$ L
. P0 v9 ^. q' f- J5 _% t
卡巴目前还不查杀此免杀方法
0 c3 ~# c; b2 E/ i. m; E8 z+ [; R$ b  i. O7 p2 Q1 C
$ a# J: c4 v- c4 Q
唧唧歪歪这么多,打字有点累了
; M3 r3 U6 I- a! O, v9 B
$ O; D" |  k3 H, D! [! P- c以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
/ |. C4 o2 m7 Z: u# K7 ^/ j4 l
* H9 [. t( c. M2 ^5 t- x! G1 [[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表