返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,2 z  B% d( w; G6 {
$ |( `: S4 C+ R. y/ C( B' b* d% B
特拿来分享给大家。) ~- C2 q& b2 Y, k/ k2 u4 R4 S* p3 W' \
* a4 l4 Q% P- d
今天我们不提我们国产的那些杀软,真的垃圾的要死,
/ B, l" u4 `' A* A3 |# g$ @. a# Q5 j" _" D# F
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
- q: [6 B& k) H) u( }, `4 d: `7 _1 m
( t2 \. e7 K% J# g3 K" l7 }* O我简单的重建了输入表就把瑞星搞定了,
( F6 a" Y1 B: ^. C( `& L8 Z  i3 [4 I+ I3 x8 g
失去信心了。我曰
" @7 z! X! I- r% P
4 U3 h7 ]/ F& l- w今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。% Z" z8 V' f9 [7 ^
2 w) ?) o) v4 N. I
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
1 o$ Y; v, q+ t. \& g. }% U& C( W( }# }8 c
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
5 Z/ s7 B& T' k" Y# {
5 y. `1 p! f+ ^9 m3 d高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低) J; u1 Q+ v3 L
2 j/ w' Z2 T; p" s
过了以后再调到最高,再做免杀。1 |% \- a  ?5 u8 s; R+ D. y

. C# O* {& i1 D+ }/ `* {以上是废话,
. H. l" L7 p* s6 s6 Q' F. o3 t! L7 n, y- d1 C8 X5 G
好了,下面我们来说下常见的免杀输入表方法。1 t$ Q) D+ f9 e7 P# w1 Q! I5 d3 @
% I. d8 _  u" c
一。移位法8 c5 `3 _) Z+ E0 A( W

+ C* t# O7 m- H0 g) `这个已经过时了,我们的国产杀软及时的跟上了时代,
# f* q5 s/ O7 C0 ~, Q. m  D- E
8 m3 _. F0 d1 w' |# {! M4 [6 |移位法在去年过金山和瑞星,还有江民都是可以过的,
5 C% y" v" h3 H2 [, k% p. a7 Q& u% r+ i% Y) P- S0 h7 t
现在的杀软智能化了,移位么?呵呵 ,追杀你。3 A2 w: H: A3 {$ l8 k: p

8 n& L; |5 ?, l" Z如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
. Z2 o" g2 R; |+ I# b9 f7 F% O* T, K, ]0 f5 Y
二,重建输入表
; x! F/ D8 ?. f' R: n# l# z4 m' x
3 M  V& x8 l1 L2 J5 k效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
' F1 h$ H' `, T) C& o$ g; i' S7 g% v0 a) c0 E
这里我介绍下,
- V6 g1 ]& r/ H) L( t" v; @; {: |8 _' H
用到工具:7 Y4 E5 d. g2 M3 R7 s: k6 v1 f
importrec1.6
+ D$ e: M4 S* S# ~0 [od$ W! I9 o$ g$ x1 U0 i2 Z7 W
c32asm! D. ?' {' i" {, I$ L
loaderpe# S' L% P' D- T2 h1 `: K
这里我们简单的介绍下,如何重建输入表. m) [3 K# m1 c% h& v3 |0 A
9 X+ e2 S* @$ L3 t7 A
首先吧文件拖入od,打开inportrec1.6
+ e% s" F$ z/ B9 I+ K; k$ G  K/ z& w) B/ G
如图 选择拖入od的程序,
1 e: \4 T# a- o0 Z# x1 a( [$ Z! c7 |. K5 l( ]7 O

& ~. ?9 Q* f) k$ u1 e这个时候,我们打开loaderpe,& U+ C5 ~8 I) r6 i! G/ V. X
$ R, Z7 y" \% t- t
拖入我们的木马
$ ]$ n0 e) K7 F- [/ z( ]: k
/ s. E" _/ `0 Q选择目录,
: @! v+ d- f# |/ i7 X5 F! l
" h, c. ^) v' c2 R+ l1 x, r8 {我们看到导入表这里。。。
) G5 R4 s5 q7 G* M5 l( w
+ G+ w# \' O) ^. E如图:
* e5 }6 p: R9 a) v
2 u) V0 s: p5 o+ d
3 B5 \' }5 q/ c! P, f% iRVA地址是0001D000  大小是0000154C
, P) g$ j$ C) |7 D) H; z8 h/ j5 p, g2 L
好的,我们把这两个输入到import1.6里去3 I2 F' j7 I/ K' \
3 W9 U/ R( z+ U; i2 s. a) C& `* x
就是在“加载树文件”那上面一点 0 ~& E$ I& A% V) |/ G
$ b* W$ P/ Y" i/ S# D) a
输入RVA的地址和大小。4 e7 I( z9 ~# P4 Y# J$ h; d9 K

2 R0 r1 f# s5 ~点击“获得输入表”" W$ z8 c9 k) i7 Z) @, `" ]5 w+ |

& s  Y- g6 v4 A. \% G. Z, V然后点击“显示无效的”" S1 G5 k, Z$ [( s" f
. E0 B! N5 W0 V! q0 l6 ^- `
接着importrec会自动列出
7 [4 @; ^9 f; _% ~6 E) H0 `6 \9 U) ^
/ F$ H+ ]% C, j; {- J我们把深蓝色的字体  右键   剪切无效的指针
6 L- m- P3 J2 U# N- k
6 k. {9 \+ X$ z6 A: @3 C. V0 ?' M6 s+ x/ ]) u8 n8 E* \
最后,我们点“修理dump”
- J  t* R" d" }2 `1 n" B& z4 S# T  d8 c: X( h6 w* q0 u& N
选中我们的木马就可以了& B+ z2 S) r1 r& K9 w

* q' K0 }+ i( c$ M- ]最后我们要用到c32asm3 L! H% f( l4 D  O: k: ~: K
3 W) g, e8 |5 R. D8 P4 T2 A- c
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。5 M4 w4 N3 p# I% q. U" s

0 p! o  u' \/ M; s0 h: b- _" `这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
$ q5 p  u, e' O* M9 c* f' @
( E: T4 V/ C) t2 x这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,  e4 L2 [' r% L
! O& s+ C0 b# P: o" E1 ~# m5 j
我们把马子拖入od的以后,打开了importrec1.6) @) t, t8 f* b- Y4 u
, f. L) p5 Q7 K/ N4 Z/ I! a/ }! P, b
在选项那里,选择根据序数建造输入表和创建新的IAT
6 U& I$ G& q0 s+ y) L1 G+ U5 P5 @5 ^( @1 ?  b5 ^
如图6 r' B3 ^- m" z# }2 `; ]
! H+ X; |1 g' [( {* f& C3 x" r

0 N& Y8 c# r2 x  K2 H, A/ S以后的步骤照上面的方法继续就可以了3 h& ~" I, U! w
5 F+ d, ]& J( x2 k) ?1 H
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了+ ?, i8 T) |% m  O  l+ H
1 `# ^2 K6 A" z, k7 M( g
因为kernel32.dll的大小不一样。: _% h% W2 d1 R# @* |4 Z

# h: g1 Q- C' d, v; }: b& k3.修改originalfirstthunk
) X$ K) e8 a/ `7 h$ Z
7 u1 B+ Z0 z/ ~. g* s; A0 B如图所示; n2 r# ?8 a# j- Y, `
' L- s% O8 o; r0 {, n4 B; N

* p3 W+ N* K6 d* J, {2 L# ^) C! J! ]9 @我们打开loaderpe,依次点  目录--导入表(后面那个横线)9 E2 g3 D% i+ ^
$ k! g0 ~4 h3 G0 W# C; u
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll0 _4 d; w; C5 z/ n

! e: d2 d! Z; h! f# H3 ]我们右键--编辑--把函数后两个00修改为FF3 ]& a0 N# v$ L( [) C0 T

# v0 P# Y- |: x这样可以过小红伞查杀。  虽然会出现错误提示
8 I, n2 Z' R1 W4 \" }
6 c/ P& n$ Q, Z# D. m- u; Z但是不影响木马的功能,不影响上线。+ a# k4 l2 t4 M) A3 A/ x9 p
0 T: @& U; o% v; f* S
4.dll后面加20 90法过卡巴查杀
  ]7 J/ g. |" Z' [8 w( |2 Q4 R; ~$ y6 k: ~/ b1 M* t! b
需要的只是一个c32asm而已,非常简单但却非常有效
  D& Z' I. ]; d0 G  P
$ l0 [' M/ z# n1 `# d如图6 V* V# I1 ^$ J3 w/ ?4 J
' L6 N. `) U$ ^5 q4 D

8 i  V5 H( b3 f% I! m4 k
2 T7 g4 U" \2 W2 Y6 |我们可以看到,
; y% k: k7 o' z& {
1 P# M/ @& l6 |) @, @1 y8 ~在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
- d9 R( \7 w- H5 v0 N3 y, v# Y8 R% W- p+ I
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
4 H, `4 x7 s9 G. h9 N# ^$ ]
' G- ]8 \) W6 b, C2 V我们只需要在他的所属dll后面加个20 90就可以了  j7 w  F- d' q- }2 c

4 Y- g0 C* B3 F6 @& Z卡巴目前还不查杀此免杀方法7 w9 d! v* ~  e$ L3 ]1 H
$ ~+ `( n  l* A+ W

6 F- F0 ]% S; o  {1 Z) C唧唧歪歪这么多,打字有点累了) h8 E. B% a+ D2 n

$ u& |2 B5 e$ ]; u  n: e, `以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。4 n+ @) U8 g9 j4 L6 v
7 `1 \9 B* M) C# X' ^. u
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表