返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,- o$ r& |* ~& D% |( L$ O+ L8 z
4 s1 w% m/ n* Y+ T0 w& K0 j' I
特拿来分享给大家。8 s2 Q7 Z4 ^" u& I3 }. ^' D
$ x  h* P) ?% F- r* [7 m
今天我们不提我们国产的那些杀软,真的垃圾的要死,
# A$ Y: S3 Y) c4 L
+ t4 x) A; Y. f" t  L6 `9 G, z1 f上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
) N. ~$ b' b1 g; u' d! h2 ?- Y+ k& Y* K% g6 l5 g0 X
我简单的重建了输入表就把瑞星搞定了,; k7 ]& j' E( P' L6 Z9 I( \, U/ W
% C0 F4 v' E$ `
失去信心了。我曰
; ~$ @2 [8 s6 P! S
' i" W% K0 r7 ]. @* ~! r2 o今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。" L  j7 ?7 k) p) D$ }

+ |! [+ p  t7 L# Z7 |8 g3 O* \首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。8 F& i2 a9 M0 p7 O' |8 g
- z+ d6 B" Y+ B: q+ n
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。
! J5 m# r: {9 O- K, w. a$ H
/ M) H6 b$ A: C6 W  P高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低) {( G% i+ L* [: c# _' g1 Y5 f
& I! {% G2 B3 A2 j6 h! u' v
过了以后再调到最高,再做免杀。
2 }3 {; ]$ p) \! d$ t
) v# p) X6 e7 F4 H8 y* F以上是废话,
/ x; f2 [, ^) I4 D$ y) \5 C. Z
; |' n4 |1 J3 k6 H7 G& @- z好了,下面我们来说下常见的免杀输入表方法。
$ L$ t* D& t/ [; M% O4 Y& e( |) p+ k. ^% W/ h7 ^5 p$ X! C
一。移位法
' h- O/ l9 K$ e4 I7 Z
4 R' F) }$ l+ @$ A. f, m这个已经过时了,我们的国产杀软及时的跟上了时代,7 `: ?2 |1 O: l2 D% u
6 G( s: W' ?4 o: [
移位法在去年过金山和瑞星,还有江民都是可以过的,
# ]( @8 `" e1 a5 V8 l7 Q! F0 d7 R% `  z1 \0 @
现在的杀软智能化了,移位么?呵呵 ,追杀你。  B' D% `. }9 j$ A) R

  T6 w, L, c& B# e$ V( M如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
+ Y  a7 Z% T. K0 Q6 p# t2 x) ?5 C: K  l  s1 u+ h$ l+ T
二,重建输入表
6 Z# h/ A$ D" }. U% r( |: z1 D+ `1 W. }& D3 i
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈. F3 H2 O+ R# N' j  L  s8 F9 N

' n8 d2 x' R8 N4 N8 `2 Y这里我介绍下,
: {; |+ k2 d1 a9 R8 C% ?& X; g5 o0 T
: s+ l. T! w$ F+ p2 p用到工具:
$ R: G. j# D; E# w$ Bimportrec1.6$ ~7 |; Z. Q5 Y6 f1 H& F( [: g
od  u9 A4 r% T2 }% `( D
c32asm' t" `3 `' m; v6 p
loaderpe( l' l! _2 U- j( K
这里我们简单的介绍下,如何重建输入表
9 L' ]$ i$ s) V7 I" ]! J0 I) ~6 J  G
首先吧文件拖入od,打开inportrec1.61 v8 k0 {$ N) f. o* N& k

9 A) p9 P- z- y; g6 {如图 选择拖入od的程序,# f' F0 m, T* y. ]6 h0 O
- V& L3 [: [, o6 F  u

6 D! _  S" ~$ M/ ^8 o这个时候,我们打开loaderpe,
& S- P- Z9 x: ~; r- K% p. S+ D; J8 Y0 ?) w/ I8 `
拖入我们的木马
* j9 Y4 |4 |  O( k. u/ ^- ]) G) I1 ]2 }  k# S3 O; p, W+ ]4 c
选择目录,' T; Q- t" `# ?( m

- Q: }0 x9 r  J6 ^- g; U- _我们看到导入表这里。。。
* p; ?; f9 U" X' X* ~' ]0 B$ Y8 s$ T: k  Z
如图:6 q$ y. ~  P+ Y1 R1 l5 [  h/ u) q
/ z- z$ z" R4 B

* Y6 O) W! F/ d! k7 [RVA地址是0001D000  大小是0000154C9 [. B: A; k* g- G8 U2 X  |! s
9 N7 R3 n7 k4 d4 k0 g9 Z5 ^/ N
好的,我们把这两个输入到import1.6里去
! ~$ Q* s' _) C3 Q: x% n
  i7 ]1 e$ k- a: r3 ~( ]就是在“加载树文件”那上面一点
  S7 W* y( @! ^: `6 E0 _: a9 e1 F! f: T1 k
输入RVA的地址和大小。" p' I: q( f/ y+ w' s
; ?! n, a& ^6 X1 R& o! }; _0 h
点击“获得输入表”; V$ ?8 E' X4 G6 K/ M+ _. r3 y

0 \' x$ L# o4 o- s8 N; a然后点击“显示无效的”
0 ^& p: B  S+ w/ Q( D3 u3 {1 U
+ }# f# {- {/ K! V接着importrec会自动列出
) C( R+ G  n5 U/ J/ J$ l( R. Y( \1 j' n+ t% r
我们把深蓝色的字体  右键   剪切无效的指针
( \8 g, b& Z5 z6 v  M2 F$ i
# B- V- `/ U7 I4 A# i( X' O! G9 T: r# Z, E3 X" @
最后,我们点“修理dump”2 s" E4 C0 x) a4 p
$ f2 u7 N! E! s9 A, D. R
选中我们的木马就可以了
# ^0 `+ L, ?2 e
3 @4 N/ M( i: j) Y5 M最后我们要用到c32asm
0 i7 g4 a# ]$ w& B6 O+ z' I( B* y
- v1 m( Y+ [" F0 G% J2 z我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。% `0 P* x  L4 R2 [( A8 a
8 A3 ^& Z2 X. P$ H  \8 t& H
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)& l/ y# D/ x  s1 y. W* t

$ G/ f( `" ~& j这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,4 U3 x/ k% a3 |5 D, O7 `
) g& D( C7 w) Y6 E0 S1 m
我们把马子拖入od的以后,打开了importrec1.6
  h' L9 K# x  Z' Z" O& r: N7 S% l- H2 u  _9 u
在选项那里,选择根据序数建造输入表和创建新的IAT
5 t: c8 f# r0 Z( F( L6 F1 i2 x3 y$ k" J) {' R" D4 j; z/ d
如图
" i! ]0 f; _2 `: R( K8 x7 {5 F+ t$ Z9 D: y8 n8 f6 i

/ b# @( t( y9 o! p5 |以后的步骤照上面的方法继续就可以了
1 t4 I. @; `$ a( |3 u7 C/ A) {1 I
4 l; s8 b3 X6 e; g# ?) v: x1 y' y9 ?不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
; @. i; ?; b% `: m. _6 i9 z( P, u2 P, w+ J7 O* G# s
因为kernel32.dll的大小不一样。1 a: u+ S/ S/ e, m" I

- e% d) T3 Y6 l; @3.修改originalfirstthunk
) P1 n; z" t3 u6 c3 G& B) W, s3 a- Q& {9 w, @# ~& K4 }2 Y
如图所示0 i) r8 _0 T. \# D
0 Z1 z" u: {3 T7 N

8 L' r" {- R* Z; f% j' s我们打开loaderpe,依次点  目录--导入表(后面那个横线)  f) _3 U* x7 r9 l5 N4 U: o
) G' z& z2 M: `: x- v' }+ [
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll# f) L, @) d7 M1 F

  H+ k6 u% j4 s# @我们右键--编辑--把函数后两个00修改为FF9 U5 w2 [; w1 ~7 t2 e/ J
$ \0 G/ p/ F/ r* ?
这样可以过小红伞查杀。  虽然会出现错误提示, U+ b2 p+ M8 L' [. E

( Z: z" D! R( h  i但是不影响木马的功能,不影响上线。: g4 M( D) b4 p4 V9 R1 T

* W; V2 m7 g6 a- H( }& v, }6 L3 i4.dll后面加20 90法过卡巴查杀
, Y. S; S: b4 Y4 J3 I+ Y
$ Z7 g3 u) {  x: G需要的只是一个c32asm而已,非常简单但却非常有效* C+ o) v% l  f: E

9 ^  N% K+ w' O2 G- K. A3 m, F如图
- V: ]+ R* ^3 j' b4 [% {! X0 ~2 U
' c4 _* u0 ^* i! S7 ^
3 ~2 e) w1 c4 p* J2 w, A' q" t7 Q7 Q! ^* s& y
我们可以看到,* z, R; d( C* W7 c2 l
$ R1 P5 g: q1 z% b2 x6 K3 }
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
; ^# Q! y" S7 t- ^
0 r/ L; C! w, e" H$ {这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
* V" Z( R; T$ l/ N+ m$ U5 J+ o- r- O) ?' U) ?  b+ [7 T: X
我们只需要在他的所属dll后面加个20 90就可以了3 Q( q5 G0 o( |
3 r5 W" K, D. j
卡巴目前还不查杀此免杀方法1 X% E: U7 x3 ]5 m; {7 ]; |

, o- [( @8 K6 ?" ]4 a) c6 I( \4 d1 b# L
唧唧歪歪这么多,打字有点累了( W( o" _* j1 ~! u
: @! O' _7 w* Q# e
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
$ E  c$ c1 U2 r. ^) _! \( \1 @3 ]' F/ H& Y
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表