返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
. S2 P& f: o! c/ }9 w, O8 D9 R. ^/ E9 F: ?* s* _! ~
特拿来分享给大家。
, j. M1 y: Z1 R4 S% I  G3 D/ P- F; W2 a4 ?
今天我们不提我们国产的那些杀软,真的垃圾的要死,  r% k+ ^7 X% Q' t( Y% M  u
8 ]7 ?7 y, i4 s1 m4 D1 w; z/ H
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表1 P5 F1 ?$ M% P

/ F7 b" f6 o4 i$ Y我简单的重建了输入表就把瑞星搞定了,& t& L6 \) O3 [

- V3 @" m9 a6 @, m" w5 E% T失去信心了。我曰
! {0 l# `+ b$ B$ o! m' S$ i( q! ~6 V5 {7 ]0 N+ L# T6 i+ h$ j1 `
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。! W5 T1 m( ^4 O2 X: M

" t; K. Z8 K+ z首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
1 X* }2 X3 M' l7 X# x! @* V. P" @
) Y. H. D; e- m  F' j3 C+ E外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
6 f2 y$ j2 m9 u/ E" `9 ?4 a) {# `2 v' K+ E; u0 `, b8 Y
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
% A9 I2 e/ w" S3 }
( h& M, Y1 z3 s( ^. ?& W/ |# S过了以后再调到最高,再做免杀。3 R/ h% K% @1 l" W

1 [1 v' t/ `3 q以上是废话,  S+ v. v5 [) i. }7 \1 J
. o- h. k) }5 o1 o
好了,下面我们来说下常见的免杀输入表方法。
  j" c$ I7 Z( A2 m- a0 }: j8 F1 q! z6 r5 L
一。移位法6 K( C( l$ Q5 U  e- S6 g

4 e/ e. T3 c/ v6 n; Y9 t3 v+ x这个已经过时了,我们的国产杀软及时的跟上了时代,
5 q1 T& u7 {& v( @+ f$ @! [8 `( p/ I9 G
移位法在去年过金山和瑞星,还有江民都是可以过的,+ v, w- W9 D6 Y3 I
' C. z" \! J3 x$ y  f
现在的杀软智能化了,移位么?呵呵 ,追杀你。% `4 N# e4 @. {2 p/ z
5 O1 d; A. c/ J4 V& {- D) J
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
1 p, k* `6 c1 [( r& C. p8 [3 q; o! M: J  `+ w. W
二,重建输入表
- P, k2 a1 P( O* D  O0 Q* G+ [$ u* ~2 E
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈& m6 i; h. j- j) \3 A( @7 G. z
! |4 Y+ U6 q) _, ]: I
这里我介绍下,. ?* R. K3 d  s& U. x6 U

: F$ d; Q' `: f$ k5 D/ k用到工具:
. G+ C$ w; _" y7 W' }importrec1.63 F& _0 p& i3 S; i' }! b5 P; z! U
od
' \6 U5 [& V' |/ n1 oc32asm  _* u$ p! P/ U6 r" r2 Z, b, t
loaderpe
( {8 c6 q7 v' Y. I这里我们简单的介绍下,如何重建输入表
4 A, H5 G1 x6 d
& @" N' Z- N1 e1 o. K- J首先吧文件拖入od,打开inportrec1.6
: [4 l3 U0 N7 L0 a
$ L0 `+ t) V( H$ |* J如图 选择拖入od的程序,
/ P/ b! _6 h* D8 t* y- S' v; E/ |, M) v5 E. H

* Z( U" Y. V% [4 y, c$ y* {这个时候,我们打开loaderpe,
+ X: l0 {( s5 ]6 j7 g! _+ p8 x( R% G: x  _0 Z/ _% z
拖入我们的木马
3 w7 u3 C$ M1 J7 c/ R/ C$ v6 t* {2 u0 h2 L+ x
选择目录,; {' j  T* A$ L: C6 d0 I
2 s8 o* u( u, f+ l# M4 k5 F* s
我们看到导入表这里。。。
1 n0 ^% O! p- f4 \+ R. ^/ ]) P. A/ ~% h  D- q  j
如图:1 P. r" k) q! T

0 l( L3 |) |6 D0 C0 e$ C% E  d9 y$ S: ]" r8 G
RVA地址是0001D000  大小是0000154C. {0 j# b/ C2 a1 C
% L3 H7 s% E3 l, ~2 C* r
好的,我们把这两个输入到import1.6里去- q  p, F% P5 L  o7 W, g
2 \- I; l0 L+ _. r: L$ H
就是在“加载树文件”那上面一点 / h1 e! Q2 S  @% u. t

4 {% T5 h) r  s9 g( a输入RVA的地址和大小。+ ]" a8 R1 s- [9 b* r) p9 @

* v- U4 F/ Q7 n1 d8 j$ ~- S点击“获得输入表”
( e0 F; y7 I7 d* }. t
! n3 z/ }- R  A, C+ T+ b然后点击“显示无效的”
$ \6 i$ v# v0 G% K2 g
1 q' ?9 J9 ]. E4 M" ~; g; x接着importrec会自动列出
, a! |4 T, C! {
: Z" t* j1 q5 q我们把深蓝色的字体  右键   剪切无效的指针3 i$ @$ ]$ p. H) M0 t* [1 B

& s, R2 f% b& @4 Z7 ~% S' }+ w% z8 X
最后,我们点“修理dump”
* t% n' }$ s: Q9 {2 Q8 l6 g. K; y# ]. ^  p& |. ~+ S$ l# t! R2 ^2 X# ~" a
选中我们的木马就可以了
( a( {6 n# w* O: l. q) S0 ^8 r
- i) o* U% A  e1 K最后我们要用到c32asm
5 X" X8 r# k: E% G3 y4 E: {+ Q! n# B$ l0 ]2 a% p, o# V
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
1 ~4 d8 C2 f  E1 i0 S/ p: z6 x. h
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)) y8 W# e9 S' \

) i! e3 D" L5 R, s这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,5 ?6 f9 ~* D- ^8 G9 Q

) a- g( ?, o* I  g& r; c$ U我们把马子拖入od的以后,打开了importrec1.6
, v6 [$ g+ x/ e; e; W1 ]" Z" a9 ^- T7 G8 C. N! G( A- |1 f
在选项那里,选择根据序数建造输入表和创建新的IAT+ n" @- U$ K7 M% ~- K  y
8 n4 W, B: c3 q& D% |) w) s
如图4 |) L& Z+ \5 _" P- E; V4 _

4 ~) s  J" z# b0 v% H3 Q- g' H+ e/ |. |
以后的步骤照上面的方法继续就可以了
( D9 p8 X4 _# D' `% J6 I+ t, T& C/ I$ G
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
' b+ ]( f& f) b  X  R1 X3 b1 l5 u* r
因为kernel32.dll的大小不一样。
" i1 K: h! G9 \# d2 s) m* G
# c: l0 H9 x9 P3.修改originalfirstthunk) m5 E" Q4 ^# Z( E8 d7 y# o
$ H7 _' t6 c# E4 B) z  x+ z
如图所示
/ ?5 ]: x! \( ?9 H, ^3 i1 l& @" b8 g( d" {. P, J
, O: n  o2 C: W9 g7 l0 f8 g& p8 l: X! Q
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
3 p* E; e) l* |! Z9 @6 k) s0 i8 w2 `" B7 X5 Z' W
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
' }- M' j6 q% P3 T) x5 R( ~; ^# S, y* N! S$ t- {  H* t! E
我们右键--编辑--把函数后两个00修改为FF- B/ p) b0 V7 r/ e' k
3 u, o2 g5 ?7 E" z$ n6 Y
这样可以过小红伞查杀。  虽然会出现错误提示2 c, {5 e0 f. o
( F6 f% S3 H; D; G; W. v% b
但是不影响木马的功能,不影响上线。
, j2 H. E. w6 `- g* V; z2 r0 L$ c" x, A0 m: e5 p
4.dll后面加20 90法过卡巴查杀
8 l% u- E* b; J' l* Y* ^$ V5 L* R8 t8 g% u1 ?8 [
需要的只是一个c32asm而已,非常简单但却非常有效
' M6 Z$ a5 t: ?: t: p$ R$ i0 @8 Q+ k& K3 o+ ~
如图: }4 G. U# O& m

6 d" J9 K& g8 s% ]0 u* j- L0 P# o: R
" h" B/ s/ D+ u' e, q/ |& F" Y
我们可以看到,2 S- x! H' X8 Z/ ^( ~
' z1 q5 j$ u8 |, ^# r8 P/ u0 o- K
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
! d; f8 S! C7 V9 G! r  L# W6 s0 s, L2 B( d; k. f9 I2 Y2 ?
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
# i" L5 V- q' H0 P9 g
1 V; p) N9 A& X" O我们只需要在他的所属dll后面加个20 90就可以了
* u" o# N. ?6 [& w
* b. @& Y3 \& }- X" C3 I; M+ {卡巴目前还不查杀此免杀方法
! g, G/ b* Y$ d* ^* f" P4 G, o8 D5 Q* }. u- o8 b% r+ d" S: f
$ z! s" u9 p$ w9 E
唧唧歪歪这么多,打字有点累了3 z* m, }& z' x! g. x  i9 l

# e  ]) {2 u' Q) K+ I$ _" e以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。1 [+ l8 ^( }# `' w7 ^: Q

6 w; }' i- `4 y[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表