返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
' l, n( L" [! u1 \* u; u# q
7 f4 l" v- j! k' U4 L特拿来分享给大家。
" C: b3 S' i: [" i8 {# [: [4 Z9 \7 T2 A( |( u
今天我们不提我们国产的那些杀软,真的垃圾的要死,
0 i% l  J% f5 B, |
: M" b2 M) @( M" N" [0 S$ o  _% N! s上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表: R: c% Q& o5 \

6 c3 z' A- g7 F我简单的重建了输入表就把瑞星搞定了,5 V! m$ A6 ?2 a' |& P

; ~7 n+ B8 H0 V2 f# Z* d失去信心了。我曰. `6 l6 f8 P7 P  I
1 ?, k3 n" h% `: f( k, U
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。
, ~% c" c( H7 b4 b) f
2 d( ]+ [( W& l' x* f首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
3 B& y! R6 M9 `2 f6 H
, U6 a0 |/ ~7 [1 J: U( f0 r外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
, `" A5 v1 N. k( y" ]4 K4 V9 l
5 ~- r4 A! d) U- T* K, i高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
2 [- Y9 I) @) Z0 F6 l4 g
. F, N9 J2 o9 Z$ K) _5 G过了以后再调到最高,再做免杀。
3 B- _" C5 F! v! q* L4 k
% G1 i% u) M) }9 m& Z( }以上是废话,
7 a. r  c% F& x* a/ F
7 F# X* T. b+ m4 X' Z0 @+ i7 M$ m% X好了,下面我们来说下常见的免杀输入表方法。
% l6 ?9 U5 Y# R, U. H* |7 V5 Z# L$ d
一。移位法) `, S! `& f% q' |+ c# n
; z7 h5 L/ h# D" X+ s  h% u
这个已经过时了,我们的国产杀软及时的跟上了时代,+ s4 X% b2 D1 B  y: l3 z% O/ ], B
. b8 G9 G9 Z3 ?. U& l9 f* r- |4 C
移位法在去年过金山和瑞星,还有江民都是可以过的,
: i( t7 D- O$ ~7 g$ J$ Y% I1 \- U2 |9 u- o- L
现在的杀软智能化了,移位么?呵呵 ,追杀你。
7 b# F2 m$ x8 H# |# q3 D
1 ^$ `/ X! `+ t+ H' _8 I如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。' }' A8 ?3 d; J6 G3 \8 |
* M6 ~! f# h- M) j0 }( u$ p
二,重建输入表
. O! t) S7 {/ y% s% |- d$ a5 i* H# i# G
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈/ s7 r8 D5 F# r! ^, |4 L6 u

2 {# y, w4 P6 S, i. B( u. o$ P2 v这里我介绍下,
* P9 H( y6 _/ p6 o; b' l4 F/ @9 ]
( U4 p/ ]! k+ Z" p4 e/ x( \用到工具:1 d9 [& o8 o, w
importrec1.6( C* A- y" n" j! W+ n
od! X% W9 b; [8 |! ~4 D6 U
c32asm, b9 R. Q7 E& O6 x
loaderpe, H- B- X* S& A- K4 {- v
这里我们简单的介绍下,如何重建输入表# I. C  e8 w0 ]
% z( i, F5 K3 g9 ]
首先吧文件拖入od,打开inportrec1.6% z  F) ~1 N; r& _3 J- Z( o) F

; y% v/ Y9 b  ?3 {& p" h/ F如图 选择拖入od的程序,
, E; o$ ]/ ~* }$ Q! X4 R
7 M2 [8 v. u0 W- z6 N6 H: u6 [/ z9 w& q) q* h+ H0 D/ t& E
这个时候,我们打开loaderpe,
8 }5 H2 Q7 H: G8 A  |1 c. Q" Z4 E# W6 a
拖入我们的木马
$ `  a3 j. k7 R# }2 C: O2 F! n! y8 A( `' e
选择目录,( X9 Y9 t. l7 I7 s% t, a9 Q* W

, y. A# t% r; d, y' k我们看到导入表这里。。。8 ^7 E2 P4 R2 I. h# X1 m0 m$ l

- @0 M& H0 h5 V( k  k5 w如图:7 z4 l" O# D: H& }: B$ J7 L
  P' C# ]( T: U, v. n9 z
8 W: I% ?: n$ \, E  P' Q
RVA地址是0001D000  大小是0000154C
6 s/ D: f$ ?* p0 E; l+ X- l- b) C) Z( `9 ]% H+ j/ C0 f
好的,我们把这两个输入到import1.6里去, u& Z- P8 R" S/ I4 U

3 f5 H+ H. `' B8 h, c: {6 u就是在“加载树文件”那上面一点
! ?  C2 x& z; _/ E) q. [* F- A. I( k' D- [  X2 F, o
输入RVA的地址和大小。
) h4 C% U# H9 [; \2 h0 D2 o, v' v8 d% o1 v% |& t0 l
点击“获得输入表”
* B/ P% M3 E- C8 f) h4 ~$ Q5 M# H0 F* ^- u* g2 y! w* l" ]0 |
然后点击“显示无效的”
: l0 P& ~8 Q8 S" I
/ C8 T8 J& @4 r  W5 [, K1 N7 `接着importrec会自动列出
. _5 ?2 g0 X6 C9 b0 z2 S# B+ u9 v) F3 e* [3 F2 G( x* r: n  P
我们把深蓝色的字体  右键   剪切无效的指针# R5 c9 n4 n+ S* s+ o

$ @# {$ e0 `  i1 Q4 T  v: q. w; R3 ^' p% _4 S1 G
最后,我们点“修理dump”
5 U7 m7 i9 ~# U: [& T$ }
7 J7 t- l5 y, ?+ A+ t% W1 }+ w0 z选中我们的木马就可以了0 `. D3 `/ a2 X4 e5 C# S: p
5 f3 ~! w1 \5 v
最后我们要用到c32asm
8 b* C; S" s$ I2 v6 @1 o5 g# F( M5 ~, h; ]  z5 [; I' X* S7 W$ ?
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
8 E5 _. A" P3 [' _0 g8 O2 k3 L' E2 D) q
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
/ P0 H4 J7 I' W# F9 O
  n6 K$ _) U0 t* v! u6 y5 i这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
0 B% J: b" E4 }* x- V$ |* T) d
; @! D, O4 l2 K% x" L5 Y( ^我们把马子拖入od的以后,打开了importrec1.6
/ o' c) z0 S/ y0 T* r
! E: j8 d7 H. K) R) o在选项那里,选择根据序数建造输入表和创建新的IAT
% k, }. J% s" u7 @: W" G$ y0 X/ x) I5 T0 `" Q4 N& z
如图2 p7 u6 S& i! k
6 B! T% B5 J/ a5 a

3 t/ W; l) E7 e5 W以后的步骤照上面的方法继续就可以了$ @. C2 y8 ~1 j, ]5 Z
1 `8 A) k3 b  d! N( J4 ?4 `
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
# V& M& \' \" f$ G4 Z2 j
0 z. j* ]* [0 c& n因为kernel32.dll的大小不一样。
" Y3 d1 t. n2 T/ m  m! T  G3 r9 u& ~% Z7 `
3.修改originalfirstthunk, U- A, g6 M; X  [

& l  Q0 V  z4 Q" N1 V; ^如图所示& F+ N6 d. B9 n5 }; ?5 Q

' Z- ]2 o4 [3 o  ?. t* }
) d8 Q) Q" y0 h5 o2 a6 @我们打开loaderpe,依次点  目录--导入表(后面那个横线), C2 e1 r0 T0 u3 A
2 N+ D& x$ B" _% s+ V  O; h
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll$ n/ V- w. o8 y1 P# B
/ R- l% Y2 v  ^) c
我们右键--编辑--把函数后两个00修改为FF
3 I; l* g1 C1 ^! w6 S6 n% Q- k: v2 y8 R& A6 N: _; L( J
这样可以过小红伞查杀。  虽然会出现错误提示
" U: u$ O" S; Z1 K' f' a- J/ K5 }) x- S. e6 X7 F9 G) s
但是不影响木马的功能,不影响上线。
  M* N- [8 ~- M" G4 V1 K2 ~( i& c6 _: `# h2 G8 J8 \3 A* y
4.dll后面加20 90法过卡巴查杀, Z& e  {, D0 Q2 W2 W: o

, h3 `0 i; _9 e' f! C# w/ D! `需要的只是一个c32asm而已,非常简单但却非常有效8 x. R, Z) ^' P1 i3 {  N& @- T

1 Y, f8 |7 t7 ~7 y& y& P$ Q如图
! x/ r2 u9 ^8 A' _; V2 d) A3 \  E) c* U, [
& o/ f- c9 y8 t3 y8 h  Q5 I

8 E6 P. ~. J$ N我们可以看到,! {, B1 E% Z3 m( R3 n- `

/ I  o4 S. C! z在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 908 i! k+ u. R4 ~0 v

5 V2 P. g) L2 R% p这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
4 Q/ y! l' d, |$ x8 Z$ x* K/ K* h, x: K
我们只需要在他的所属dll后面加个20 90就可以了( R) z5 e. I' L7 ?% i

  H. f8 [! m; f% u卡巴目前还不查杀此免杀方法
9 K! m  x9 ~2 p. s# q/ r  |5 M' @3 w) p( _# z# X" L/ o* F6 V  N4 ?

) u+ Y7 Z+ e* t3 x唧唧歪歪这么多,打字有点累了
" e+ g( h" V- X9 h
' S. Z% l" d% |6 H9 j以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。. {# W, G) z( n& R( ?

5 U# F  s; \* ~! J$ n[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表