返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
# ?; g. y4 q# E" J% o4 ^& F$ W& y$ X1 {0 L$ K( J5 x& G& Q% v5 T/ r7 I
特拿来分享给大家。
7 ?( j8 z% n' B9 Q9 p7 r; A7 J3 c$ ^" c$ d
今天我们不提我们国产的那些杀软,真的垃圾的要死,/ A0 C  L* W& J, ^/ W
& F5 Q, c9 ^* k& g9 B. E
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
/ t$ n6 S- Y0 N  Q8 H+ ~
  d. [2 U. F; B4 I) z9 x我简单的重建了输入表就把瑞星搞定了,
) {, w& k1 ~- B  F# K* O* m, @3 A  ]  G/ s
失去信心了。我曰
% _3 C3 k2 S* H6 I8 X5 I
7 [" B# Z8 |4 g2 G9 B3 A! i3 [7 Y今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。( g5 r9 [$ n0 @

& A# H! b& D4 b  ^/ b* s% O首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
' a7 V) B; D& o% f  l
1 J8 C5 N. O7 n1 {( e& `外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
8 c+ I$ r% h( O  ?, N8 n$ s+ A5 Q- M8 ]4 g  o
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低8 j2 t, ^! B" D( s
9 O: _7 y# {5 z7 {; j
过了以后再调到最高,再做免杀。8 H3 P$ y6 I- q

( E/ ?5 [0 G6 X! W; J% ?以上是废话,
/ F1 }0 a, i0 j* F# M* s9 I" b) T, M% f( M
好了,下面我们来说下常见的免杀输入表方法。9 R! k' U1 ?! N' p4 [( v

' M! ~8 B: l6 F# V* ^* O$ f; A' U7 a一。移位法
' [) q, L/ E% W8 [- e/ w. E/ b1 \+ i  t* `% Y. _1 W% f1 b
这个已经过时了,我们的国产杀软及时的跟上了时代,3 y- {! r3 k$ R% M
: D2 Z0 F: `$ ]$ F2 @9 J- s
移位法在去年过金山和瑞星,还有江民都是可以过的,9 b# G$ z* d8 S2 l, f7 }

4 r6 E' u# O" l: C! K现在的杀软智能化了,移位么?呵呵 ,追杀你。
  {3 d6 _3 k# h; B) X3 U9 O  z( l
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
' b# J9 d- V% \1 S9 K( G: U3 v1 s
8 L8 m. S& j) X1 ~7 |+ m1 k二,重建输入表% e% b3 _; H: o' \2 C3 Y4 z
4 }6 r' }7 v7 ]- c  ?- p# ^
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈9 Z" U, X# r% w; N
7 a4 b" V) Z- M4 B0 A. a3 d  J
这里我介绍下,
6 j0 y& ?2 R7 W: i( K6 F; g+ Y# C
( K0 n  g2 J3 U$ Z* v用到工具:
. r9 W- Z' r* A) _( g& j) Wimportrec1.63 d! F* j# }- u
od& m" z2 D' A) V& ]' h4 Q
c32asm
8 e! U$ o( X. W7 u' k: r7 floaderpe4 g& |2 |9 ]0 V) q1 z0 p6 {+ e2 J
这里我们简单的介绍下,如何重建输入表
3 x7 u0 Q; O& _
1 L% d2 \/ Z# o: K, L& q, w首先吧文件拖入od,打开inportrec1.6) k. [  [, c/ r5 n& x
  g# P% |5 e, r* d$ l7 `" Z
如图 选择拖入od的程序,
& a$ F1 F4 R8 A6 j: E$ B) |/ Z  g% A3 |  ^& e# T

% g# c( l6 E& ?) k这个时候,我们打开loaderpe,
9 n9 g! V# f! i1 U# t, Z3 `; H6 F2 U/ n1 K; M
拖入我们的木马, S5 k9 J3 v9 T: }) c4 G4 i
0 e$ z/ _1 b3 G
选择目录,
# @* \8 q$ X8 m3 l# W- O" E! P0 }2 f' w1 t( B3 z6 J
我们看到导入表这里。。。* ?) X; _$ O6 Q2 [
0 c1 B. ~5 _, X
如图:. X+ i4 r( c4 b# ?2 }8 K) ?  w
% R' z' Q3 i$ H8 E4 a0 T1 i# O8 e

2 y. y" K8 j/ h* O4 jRVA地址是0001D000  大小是0000154C
1 W+ p% g& a- u( v- z) n" U- V6 }: E9 h9 U- m( y; |/ w
好的,我们把这两个输入到import1.6里去* H& ~- [/ T0 k/ E( Q8 R: }1 w9 j* e
. G; N& k4 w7 S
就是在“加载树文件”那上面一点
6 z( V' r8 j" p+ Y9 k
7 n: N$ p) N$ g# B9 [, k输入RVA的地址和大小。
2 Q1 C4 `& x+ C, P6 B* D8 M/ G$ {# j% U2 x% `, I5 O6 V
点击“获得输入表”
% G# Y5 Z+ G  i# L: ?4 N) F
1 X, x7 o8 t7 I% z2 Z然后点击“显示无效的”
0 D+ @& ?7 D  T5 ]4 x
' s+ s: z: D# Z0 {. ]: \接着importrec会自动列出. A  r. V9 a1 }! T4 Y

: n; q6 }3 C+ ^  J! o$ ~我们把深蓝色的字体  右键   剪切无效的指针' h, T& T7 r2 b
3 z- a) \9 s. e0 L

: d; B3 k8 p0 |8 s9 n最后,我们点“修理dump”) v/ s" i. k, |  b2 `; E

7 M% a8 x3 [( _# O0 b; ~& o选中我们的木马就可以了2 e- \2 n- G4 w/ h% ]' U: H- R  o

7 w" K; v9 U; |8 f1 ~0 v9 |最后我们要用到c32asm: K8 k% h/ @! D; N1 T1 t
* w" h+ K  K) C1 r
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
& {$ ?; s$ e% g: c5 g! r
- H. a% e, z5 p$ Y( |这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话), h. m2 @# }) t! f3 M
+ l5 m7 ^; O0 v. b) I& [: o+ E8 R, b8 W
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,3 G- q5 L+ D3 x) C5 O. y3 M  Z2 d

- ]# Z; m" j) _% H) j5 @2 Q我们把马子拖入od的以后,打开了importrec1.6) O7 n2 y, @6 c) r. V+ ]

" P, _$ @& V! b# b" s在选项那里,选择根据序数建造输入表和创建新的IAT  {; z5 |3 a9 w0 W

7 P+ z9 T  j) _  q0 f2 G如图
3 H* ?& _; F. U: J' W! g7 K% H! n  P+ \

, K' O; w! s9 N以后的步骤照上面的方法继续就可以了. N: v5 E% W  W; R; B  I# b: v
) ^% T8 g  P; K7 V7 x
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了2 m6 @; M8 W6 {1 n2 m: l- q

) m; P6 N9 z' \/ I因为kernel32.dll的大小不一样。; e5 ^5 S1 W; P8 ?4 E2 Y3 I
& u/ M# W) ~( D& p: U# {
3.修改originalfirstthunk* U& q% e, d" C: `# f" i& a
$ ^1 R! o" h+ Y0 r/ |# V' W
如图所示5 _; Q7 b9 O$ a, m4 R/ q; N1 h% s) o8 h, ?

( n8 X' h- Q2 Y2 G
& h: {# q$ R4 K* c0 H我们打开loaderpe,依次点  目录--导入表(后面那个横线)
; v4 m! H, ^0 ?- q! L: B
" K, j# r( v$ x7 a, u我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll9 \% j, w: i: {% B( p. {" Y) H* f
/ Q/ ^$ _$ p/ p. W
我们右键--编辑--把函数后两个00修改为FF
  a, ?  {0 E7 ~2 B7 c( A4 h8 q) F& Y+ w
这样可以过小红伞查杀。  虽然会出现错误提示
5 m' l" c9 @, i/ J: d$ }$ R$ E& ^1 x3 d) b
但是不影响木马的功能,不影响上线。
: U, n/ v# n- q1 ~4 B  W9 x+ b5 g% @
4.dll后面加20 90法过卡巴查杀
, b, m) m3 q# l1 @2 z
  ?9 u0 l( O5 a7 M! X/ K  k需要的只是一个c32asm而已,非常简单但却非常有效. x; ~, \5 ~- l. T

7 B; I& m2 B( A6 b+ r5 g如图. H* ^1 b* _+ y' n  |! W
/ P3 C- t" r! T! @. m

! |, z2 |0 g* E
" b3 t* k) r- q% m( u# w我们可以看到,
; [0 f, p) W+ b
$ ^; v. _2 W4 P3 o5 B3 l在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90, a0 q* i; W5 K2 h7 X( _# O% H

. t  m( f) t5 F9 c这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection. \4 Z0 k, M  v: x2 ~6 D

" ~! {9 n2 H* m: {+ Y我们只需要在他的所属dll后面加个20 90就可以了
/ N+ n- a5 q, ?+ x5 y! F7 r6 U( v4 e1 b6 W
卡巴目前还不查杀此免杀方法
2 q, |3 M9 X7 `
1 d. c) j. L( Q  \: }: X8 P( {0 z* L$ G3 C1 H( s
唧唧歪歪这么多,打字有点累了2 `/ V* y* g2 T1 M. y0 I0 E! Y
( C4 P1 i; j/ C0 q9 F  E. z4 A/ O) y
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
" L  K# D" {0 i0 }
. `9 `, Z! H* c0 D[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表