返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少," {4 z( ?" a- i# e; j) d

9 c! |" g# E& g* k$ [特拿来分享给大家。
5 X) K0 d( S" S" p6 A- A1 W- b$ a7 Z( W; L5 [7 D+ ]- V* C8 M
今天我们不提我们国产的那些杀软,真的垃圾的要死,
. E- x* \$ h1 ^0 p0 s: j
) {- |' F9 {) E上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表2 e- `- ]* D6 I$ Q
8 F$ g5 R/ c( I! a5 ]7 T
我简单的重建了输入表就把瑞星搞定了," G$ Z8 k% d) g$ r

- g: w$ r( p1 G9 b失去信心了。我曰% s0 k: A2 k6 [( t( G$ W6 z

6 b) I7 n3 v( F1 j0 e/ L: j7 s今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。  d. ]) I. Z+ s6 j

/ n7 n9 N; F4 h# L首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。- a* V, f$ \/ y/ h$ L5 l- M) Z

& ]/ t2 V& v0 q$ t# p% M外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。9 k. Y! q* ~: V2 T

; f) |# z7 Q2 x0 I) t; i# V高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低6 p, Y& [7 Y7 G0 u: Z/ Y/ D

* O. C& D8 t+ z过了以后再调到最高,再做免杀。& m9 V/ Z4 d+ d" P7 R

! d  [/ p7 C7 m7 H5 d以上是废话,: C) o$ I% K& m# s- j$ P

2 K$ Y: z/ w/ R- V3 S! [. M好了,下面我们来说下常见的免杀输入表方法。
' J* [7 |3 j+ ^2 B$ t- T- ]# s( A
( ^0 A  y) h- h& f. L$ M一。移位法( f( @; B* h. W8 l

& @, I: ^& [- J( p) n这个已经过时了,我们的国产杀软及时的跟上了时代,, {% K/ G+ ~5 ~. ^3 C3 y5 e
9 p9 B. K" h0 x  E+ `
移位法在去年过金山和瑞星,还有江民都是可以过的,% e: J& a/ V& L2 \9 R6 ^, h6 P
! R0 k6 D% `$ U* h
现在的杀软智能化了,移位么?呵呵 ,追杀你。- j5 x0 y9 m8 M0 M- g
3 j& B/ b" V9 w* A  u- L6 B# i
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
( O! h+ [+ W5 h; p, ~
0 e- g( c4 ]- [) W- k/ I二,重建输入表
1 _0 e0 v: X/ b& z+ W! Y; R: b! ]; H
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈
0 ?5 D* N' r3 W: v$ {$ ~! {0 v+ t' |4 A9 A
这里我介绍下,
! O( L; C8 X! r0 I9 n2 u7 \6 ~% S2 i& v% j" y6 X# x/ x  }
用到工具:' |4 u$ G9 l+ `" ^9 _
importrec1.68 O1 a1 X9 \0 w; v
od4 _% y. G, G8 H! o# g
c32asm  w3 ]+ x. C# q" Z6 w* o% g& U
loaderpe
4 d* _4 Q7 y8 m& t这里我们简单的介绍下,如何重建输入表2 _/ X8 |, C6 S' u" }. f

. B, D( I& b! w% T/ _# d首先吧文件拖入od,打开inportrec1.6; a! }2 U& C* S5 |9 M
- R" m9 n5 n. H! j, s. G" w
如图 选择拖入od的程序,% q3 B: }% C% I0 n
/ k/ y- X! {  i# S; K

3 Y, j% D* |5 ^这个时候,我们打开loaderpe,  t  T. f2 m* b7 X+ W4 E

' l5 \* a# m" x7 [0 H拖入我们的木马  z1 B: s9 `: f& w( v* {
2 T1 ]+ c6 J5 f  L
选择目录,
  ~7 \. x9 r7 ?5 [8 M: ^1 d
5 n9 x+ i+ V& a# c+ m我们看到导入表这里。。。
+ Q5 U1 K4 y8 O+ {. K3 t$ ?( f
; ]7 m/ Q& s/ C' p如图:
: z% [! p. P0 l/ B/ Z; P$ K, z; o  V7 `; F, P" A9 X
2 ~& T) {/ f( e* [) f
RVA地址是0001D000  大小是0000154C+ u" A+ u4 D6 S  K, h% t1 v2 s! F
' M' Z/ |4 H1 {5 m% U  t
好的,我们把这两个输入到import1.6里去
7 B& n" F' Q# U7 E0 L. H+ a
; W8 L" A7 m% T0 h, h就是在“加载树文件”那上面一点
8 C9 I3 p2 U$ m3 n
0 p' ~6 r' R/ b4 r0 V输入RVA的地址和大小。
' W' k) U' p, P8 W3 I1 s5 \/ i) \, B% p( |. u; q4 f
点击“获得输入表”
& L- Y' \; u+ s  F" R4 v' H0 S( z4 S* ?9 Z' b( @9 Q
然后点击“显示无效的”
) n$ A+ H- X; T1 l/ N; z8 R0 e. O2 {* e' \, i* O1 i$ d0 A3 X$ g
接着importrec会自动列出& n2 [. ]6 o* S/ r" z5 |

. a: y2 ]. [7 ^* i. U我们把深蓝色的字体  右键   剪切无效的指针* Q/ j* d; Z# c3 |
# ]% h8 i; }! B( j+ N# O6 b3 r
# ~' L; {# R2 H
最后,我们点“修理dump”! r" Q# E1 x6 p# [8 y9 n# v3 f
1 G' v% ^( Z, h  m
选中我们的木马就可以了
/ {, d8 |; }; Q; K" ^  m& `8 P  j
. H' |* C; p: y4 y4 _2 f最后我们要用到c32asm0 ?4 n- `8 `& S7 e$ R+ e( p+ n) q

5 R9 }- \' S5 Y3 D" p我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。1 P8 ^1 W- r0 |! w1 f+ R8 f

4 f: E  B+ }; b/ v( ]! E) T这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
+ t6 C% V* O2 I3 F6 m( ?9 L; z7 e" v0 K' E0 T% [5 }% x
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
8 A) r9 e* c/ k- Z+ n2 H8 T- q9 G0 U0 ]6 m8 ~, M
我们把马子拖入od的以后,打开了importrec1.6. K" \% }! f8 g' ?& D$ L

2 D5 T( U! B( m, }# o/ |0 g在选项那里,选择根据序数建造输入表和创建新的IAT% R- N# [. F1 N& o
& `% k) p9 N% ~+ M$ K* I
如图
0 g, i/ f, k$ [3 M5 V4 z, s0 u! _/ z' h4 |4 _; A- s' m
, D  w/ N* N/ B! n' t
以后的步骤照上面的方法继续就可以了& w5 j& ^1 L+ v' |( `2 j

. v9 X( E/ K" S8 x$ U" J5 a) e不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了$ D3 U) T' C4 p  L  G
2 Q; O  G0 R1 M& |4 a% ?( \2 U
因为kernel32.dll的大小不一样。
$ y& i5 G$ T- y% C3 X2 T& u0 H. a7 a. G: [! X
3.修改originalfirstthunk
+ `. k* F! ^' X
( h. Y- C4 }2 f如图所示
. G& d$ g( V8 W' }  M. f8 u3 V+ p$ Z- {8 H5 p4 w8 o+ y

( z9 }) ^) l1 \+ ]9 P7 q; l2 N我们打开loaderpe,依次点  目录--导入表(后面那个横线)6 |* c0 r) z6 R4 `' g$ y  G
, D. v* f) w8 I- r* F, ]
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
# }2 g6 }$ j' ^1 B& B  P: X& g, e; Y
我们右键--编辑--把函数后两个00修改为FF) Y7 K  i- W3 _& k( D* Q! Q

, ?8 b: S( E- P. y8 E3 x0 O. a9 C) H这样可以过小红伞查杀。  虽然会出现错误提示; F3 s2 X) W9 c9 e; y5 J

" m3 n5 G/ w, f- ^" i8 [' M' r; @但是不影响木马的功能,不影响上线。
- b* I+ v! |8 n% f6 }  E4 P  T9 h3 r3 C3 }: {! f1 @
4.dll后面加20 90法过卡巴查杀
- `4 S) C4 y4 L0 C! O3 \. |# H: @: h( O6 t8 ]/ h, @4 u2 x
需要的只是一个c32asm而已,非常简单但却非常有效; g0 [- Q  m, X' X5 [: ^

7 n  t/ X1 \: L+ E! n$ g7 m如图3 m  W9 K$ g1 S, W' {  S! T+ j- H6 ^

1 B! j. ^9 g; k9 M" O' S; w
. q# A; a& W, r
: V' [+ L" a( M7 }' s9 h4 i我们可以看到,
  h+ ]: k7 q" F1 G0 r; L: F
9 {0 j' \  S3 g在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
4 p( h' Z! y4 W$ d. M  c  H5 J5 k0 R" Q7 p3 e. D, e
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
5 b( g4 E' y) ]8 o- T, s) M. L' m2 W3 Q, t5 [3 h4 I+ H
我们只需要在他的所属dll后面加个20 90就可以了
4 r4 ^6 H' x& X6 I- B
- _& J! r* y" H1 B* ]5 T卡巴目前还不查杀此免杀方法- G/ g9 c, B2 r
1 E6 Y, N# e, q

' m6 e( ~) D  y/ q) ?$ Y( v唧唧歪歪这么多,打字有点累了3 W$ }# \0 h2 s3 ?1 w7 x3 a

2 S% c/ G; f5 ^2 u, @以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
% Q3 q9 H  o/ k! D( y# O
  g0 k$ ^2 [! D- [* e8 i[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表