返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,' k; H* w" s' @* w+ _

$ W/ q" [& }# _特拿来分享给大家。
0 \# U9 d5 d8 |3 |4 Q) G  ]0 _: H" E, w$ f5 @: N
今天我们不提我们国产的那些杀软,真的垃圾的要死,; T- j0 H# u( F8 Z* Q) l. _% K
0 I. l4 w% |6 [' e+ l% N% [/ _: {+ a! V
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表8 c/ @/ r! _: |& y' _7 Y  E0 X
7 k$ m- h# i4 L( M% \0 x
我简单的重建了输入表就把瑞星搞定了,
+ }; @% w" l1 }) ^! l- z/ k& ~+ m+ C- R3 ?# B; D, c
失去信心了。我曰
. ?* e/ F# \! Z$ q0 M3 }+ D/ [+ Q; q! l
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。: q3 w# n% P' Z6 G

- ?/ V. l0 G( u" k' O首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。/ t0 S6 s7 \0 k! V

9 g- P" K) x7 H- w外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
- N* ?& z# Q6 F. a
) J3 e- e+ t, Z2 u, W高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低" X2 C# g5 H; K0 }+ ~4 f% S3 w

7 X- h" F7 u8 A/ s' a' \8 W, K过了以后再调到最高,再做免杀。6 N! W) g0 N; `/ l, a, g. G) L9 l
/ K- v4 o3 E- w. \, c
以上是废话,2 m" X: G, b: _' V: Y
+ K) T2 f1 _. Z2 n4 P# Y. E2 _
好了,下面我们来说下常见的免杀输入表方法。
$ k5 u& y/ w. o& N1 K! B( q" n' h2 ?  g) h
一。移位法
# f8 m: g7 q! G6 h3 V# M; E! R/ I/ u( t$ l* c6 c; q
这个已经过时了,我们的国产杀软及时的跟上了时代,# u) Q& M5 P8 ^* j

% _% J7 Z- y( ~# n  W移位法在去年过金山和瑞星,还有江民都是可以过的,; X' e7 Q8 f7 j, f$ @: \

( ]4 H) W. [/ Q5 ^# N! `) U现在的杀软智能化了,移位么?呵呵 ,追杀你。1 T" {" C6 n3 |! l/ C! q

- T* v' ]% i2 O" }如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。7 U- K0 }$ I5 X% V. t  G: n! v# j% n

. R3 n; a* ?4 p, W8 z二,重建输入表9 B' v( |* |7 {- G) l" s$ v. A
, q# b8 F6 P1 N) P
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
, @6 j, D' q* X+ I; Q0 p/ j( P. K# C4 l9 R
这里我介绍下,
% \. |5 D( e- D+ c# g1 j& c0 B: q! d; _! ^
用到工具:, r1 @( E% N# E1 s% U1 P, o6 P* e
importrec1.62 x8 w1 T4 Q# U1 C6 P, E- f
od# ^7 L3 W( d2 B
c32asm6 g, v8 J# @6 p* H/ N( I  w! j
loaderpe4 W& Z8 E- M  F+ k
这里我们简单的介绍下,如何重建输入表; {' C* e4 c/ G/ V0 m; D
- V5 f! j; [, P* T& Q
首先吧文件拖入od,打开inportrec1.6, J, i' \: ^* j; y/ [

7 F+ q- l7 z3 B如图 选择拖入od的程序,
% ~$ k! {" O  o, G3 q/ a
1 ~; n/ C/ [, ^: ?- y$ n4 q- Q1 Z& e1 E+ ~5 p& t9 n. J
这个时候,我们打开loaderpe,' Y+ Z4 Q" ~5 y) c8 y. l0 F# _

! V6 Z9 B, }9 S4 W% K+ ~' y# \6 [拖入我们的木马
- h3 W8 @5 W# G% o+ `6 f! Y# ]8 }+ C5 \
选择目录,1 `  F6 _' U: t; n: B: t
0 F: A. J3 I# |6 `) s3 }2 u6 ?
我们看到导入表这里。。。8 i9 w" R# u7 F# S$ W& H
2 u5 _) i. I5 E$ e/ y
如图:
; a' P3 E8 Q7 w- v. S: P6 R) b; ?4 B0 k9 y

5 l' l6 m. c( d& ~$ G6 zRVA地址是0001D000  大小是0000154C
' F& u- {% [" F* b4 R8 f$ L  k' G
* h4 r: e1 D: {+ B) q" x! P好的,我们把这两个输入到import1.6里去
/ ~# j% |. }. A. U4 F7 J
) E' Q* x% O, v, J: \  A7 ~就是在“加载树文件”那上面一点 ! S. V, l5 U; y- O% Z8 \# I# J

' E6 [! Q; H. t" v输入RVA的地址和大小。( o* E1 Z* f3 w2 n

+ b: I" |& g6 ~$ T" e6 F- M点击“获得输入表”
! J$ g8 k' B$ q, b
+ H5 i7 H+ ~$ y+ R6 a然后点击“显示无效的”
  I% K  T+ u. c: E& Q. c* D7 `  u, X) _  ?( R: c
接着importrec会自动列出, m* c$ p& K) l8 g- f" u5 z! q

+ _8 {8 g4 Q1 d& z7 J+ W; V我们把深蓝色的字体  右键   剪切无效的指针
: V* i. {' [% H1 u3 }8 l% E+ E* x) }3 v3 E( t
( c4 r4 l+ n- _# y
最后,我们点“修理dump”
% q4 v& W" h& w' I2 ~2 R4 p! e3 y# ~" U- p4 k; i. |% L: v9 B5 G
选中我们的木马就可以了/ U' e* |4 _$ _# }6 x9 n; @. B
5 S+ \% w! Z; u" p: x8 x
最后我们要用到c32asm2 X% e! [" E% X  n* ]" W) G$ b* m

( @& |: {  J9 w: }7 |我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。2 i) S; ^- g3 {/ o
! N1 V1 f9 ~) r' P4 \; A1 z- X
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)0 `- s1 u9 I  U2 w
: \' }8 L* L  k( N) ^3 |
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,! z8 o$ ^: N  Q. G2 Z8 D! q
; x0 I4 i7 r' W, _/ d4 }) Y
我们把马子拖入od的以后,打开了importrec1.6  C3 A$ E9 e' ?7 r* a

) B- r" I, n, c( m在选项那里,选择根据序数建造输入表和创建新的IAT
# z8 y% n! d# c' a' ?$ @# Z0 c  |
; G9 R" Y  z# q0 W7 g如图
$ Z6 ^9 p2 l% [/ p5 E0 I. c/ h9 L1 \  a# z' V$ O
4 S6 @# l$ }* w- z5 U
以后的步骤照上面的方法继续就可以了8 ]3 O3 d2 j! V" Y! W# T2 W% }9 `

! w4 S" _! R0 u4 O& E' Y0 b不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了$ W* T- g0 i' X! p
  P. R( \8 i) Y& W$ z7 B, e/ ~* T" S5 O- P
因为kernel32.dll的大小不一样。1 i2 _  q3 Z/ |9 H4 G

* W5 {; S" d; p8 {" o# n" T: D& P. Z3.修改originalfirstthunk
* q( G+ d" s% u2 E+ w, V; _/ i! i" D( r- k9 c& F
如图所示" s% i+ V) J* s% m7 P& {

/ L  Y" L" m* A, G. a# e
  S% B+ e) `3 N& ]7 V我们打开loaderpe,依次点  目录--导入表(后面那个横线)0 j% J; x: b) {3 t* N: s
; x2 i0 N9 o% V
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll" t" S) k4 t  H' m( |" e& d
: i: X- K1 N$ w7 D. K" ]- {/ a
我们右键--编辑--把函数后两个00修改为FF+ |9 L! z+ k: y3 t
+ v) ]; w  W( t5 Y- }1 @/ q! v) W
这样可以过小红伞查杀。  虽然会出现错误提示
) ^- i' ~; y7 H' b3 s2 B; |7 I9 d: S9 L# O- A. h
但是不影响木马的功能,不影响上线。- D7 P% H3 d, c7 h
; f) d; Z4 Q% s* _
4.dll后面加20 90法过卡巴查杀  G' _) j* ^6 v- _% L
" b* N1 o- J+ Y- Z5 {
需要的只是一个c32asm而已,非常简单但却非常有效
8 t& r( h2 g! }+ z! A
9 [5 M. h4 Z- j* D9 P* b如图" s0 l7 f. Z# F! y" |! _

0 c7 l$ C+ g* H' Z. W6 V! p( c& X

1 M' M4 G6 l# b* X我们可以看到,
! o: V) S0 w. h* j/ i
& ]: ?* F1 O* T, W在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 901 |/ F4 o) |8 |) o# z' U- b

8 c' x' b, T; m1 ^) u' J7 W这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection- \, {, X+ c0 L/ h" d- V
' U+ M- u, P5 X' N
我们只需要在他的所属dll后面加个20 90就可以了
9 g; P  l$ w$ d$ k" {
. l3 K; i5 ~, |* p* I* s/ c  M卡巴目前还不查杀此免杀方法
  X' T, @( ]2 F3 R" z  j0 M6 `0 \$ K) c4 x. t- E
% `6 q; G9 }/ Q5 F1 C
唧唧歪歪这么多,打字有点累了( \, w. ]5 p+ S4 W

, D" h% k; O0 @( |7 ]% ]) a& S以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。5 b  Y3 J3 r  _- S0 d# b8 K- S

) F  D; T: p4 _6 p( o[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表