返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,6 f) ?' _# @3 J6 T, k5 O" P
  S/ ?3 k' Z  f' Y/ O
特拿来分享给大家。
3 j$ N4 Z) e$ H' q5 t0 p  o4 j" T+ w0 l! W) M+ w- T
今天我们不提我们国产的那些杀软,真的垃圾的要死,, [, o7 u. x' I- D. C
* n8 T4 Z, V8 {
上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
6 E7 \' s, M4 t8 j! w) }
9 R; I5 v8 G5 c, X1 d. B3 b) K我简单的重建了输入表就把瑞星搞定了,
% h, w  I' ?5 b) `& r& [1 w4 N( \! I8 L' a, i+ \
失去信心了。我曰+ D: u4 k* a: B; F
, T; Q6 I3 y" m% c, U; _8 @
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。  y* ~! [! f' ~( c$ [0 `

) T: U/ D/ |6 j( ^首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
7 P2 N0 V/ M& f
) m' ]/ I$ j( B% L4 ]" u$ m外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。8 \1 Y) n+ S$ d4 C1 _! O
9 g, m7 L: D( A. P/ H- M. g
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
1 S! |  X0 I3 g4 g; k9 F1 g9 A% f% w6 U9 e( [' D
过了以后再调到最高,再做免杀。
' w: t2 W4 H& t* G" r: m6 {
- C+ b/ X2 F' {' w: p" T9 W! N以上是废话,
  n5 w5 O; m' Y9 z2 e& U3 E
/ U: f0 I. Z$ M  V好了,下面我们来说下常见的免杀输入表方法。
- s( K1 P: G( ^9 C: }1 \2 z; I# ?/ \& f5 h
一。移位法
7 ?7 T+ \6 @# a; N- M! J5 w1 ^' V
  ^* F  O, ^" j6 J9 c8 K: P, d这个已经过时了,我们的国产杀软及时的跟上了时代,
8 ^: }- V: Z& m( a0 b0 I
' G3 |6 w. ?/ [; r! G7 c移位法在去年过金山和瑞星,还有江民都是可以过的," p$ i0 _7 X7 R2 X- Y* ~" a# m

+ l" r" U! w1 h3 G$ d现在的杀软智能化了,移位么?呵呵 ,追杀你。) ^/ F% q9 |* \

: M3 b1 ?, |* A$ [如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
! c7 d' W7 q4 [8 R& S4 w' H+ c5 R# D& g' l" I
二,重建输入表& F+ u& ?+ s1 G6 s" P) q
; o$ e$ C+ g, \- e" q' i+ t5 d
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈6 K+ Q6 K- |- h& N
* N8 R4 [. E/ W% C, E" M5 \$ |
这里我介绍下,% M& |' T3 {9 B* g
; S+ s+ R+ \3 ?( c, Y" w
用到工具:
- ?4 B. z  T8 A. a: h# oimportrec1.6" L  i* e& p* J& C
od
: b1 G  s$ O, h  ^% {' Wc32asm2 v9 }. R$ g( b
loaderpe6 Z) D9 k8 D% t: x. W
这里我们简单的介绍下,如何重建输入表
8 H8 G7 F8 V: n- }& q- m% Y1 Q, |" Y2 V" P2 K1 m' h
首先吧文件拖入od,打开inportrec1.6
9 P: }; A# f. q' {
# ?2 L9 N" S' f" m* P如图 选择拖入od的程序,
  [  F3 b3 {; {6 V1 F2 x
, c5 n, h/ T7 g6 J3 d# ~* Q9 |+ }9 S6 B6 R$ j  u" n
这个时候,我们打开loaderpe,
5 h# U& H( y2 ], i2 W
" ?/ o1 H/ `: C5 I拖入我们的木马* P5 t' R* v; [

  `2 M5 D4 p0 S% i0 S& ~选择目录,* ~# Y9 M: l2 S) {8 }6 L
  H' \1 \8 G) x+ w( [0 Q
我们看到导入表这里。。。
* [0 Q  q/ A0 `7 \0 l9 n2 R) x" T7 j6 `- E- z4 `8 K+ B' ^
如图:# ~9 p2 Q9 |, T) r& x$ L

) g1 ^' U# W/ w3 m3 q) l$ c1 G5 i5 L- \& D5 q+ r
RVA地址是0001D000  大小是0000154C
) i' {0 G' f5 d- A! M& B
4 l, C: ?/ S! B9 ~5 u5 T7 Y好的,我们把这两个输入到import1.6里去8 p+ [( {, i( _  }+ m) x3 o3 h
' w2 X& N* O4 a$ u. x' x
就是在“加载树文件”那上面一点 : p& |! h+ X1 R+ K7 `$ @

5 k1 {! w2 o, h) E输入RVA的地址和大小。( h% L$ `: U6 N
! S6 n. w. R' L
点击“获得输入表”" @# ~5 |5 d% G& d: O: v

, W1 G( N7 r* R, G+ ~! B7 \然后点击“显示无效的”( t+ i6 X- y* `0 s8 q
: m4 d  f# ~8 z
接着importrec会自动列出$ Q, j1 U/ g* h' V6 r) e& v' [

( Z4 c3 H1 ]+ S我们把深蓝色的字体  右键   剪切无效的指针
' d9 W2 k* K) w/ f+ f" F! |& G8 w0 X( y/ }( h/ z

# I! Q6 E- L+ s2 y7 m7 e% Z最后,我们点“修理dump”
. i+ N9 U% h# l/ r9 c. ?) n8 x# b7 q" h
选中我们的木马就可以了
$ e$ M* l7 }. `5 s6 w) z' K+ s! y& ]0 t
/ ?, e% w' X- F4 \6 ^0 G最后我们要用到c32asm
0 ?; r0 j9 T, I' K
+ y  @. D, _3 t) z; m6 j我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。- [8 u% [/ s8 K5 c+ }4 \; T) ]

3 v, I; ]9 g) L8 \* ^! ?7 G这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
3 e% a! `6 _- F8 I1 i. p+ b$ H8 l3 \7 |( E6 ~
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
& }$ C) f' H, x  {( S" G+ q6 b/ U; z) ^2 H9 [; I9 o# \
我们把马子拖入od的以后,打开了importrec1.6- z8 I  u( k' m! W
7 v8 M" L2 i- F0 l+ {* U# W: s( \# v
在选项那里,选择根据序数建造输入表和创建新的IAT+ C- O0 ^; V* N  c/ a1 F

( }2 E9 h' o. W0 I* o: ?6 a% l如图
: g; L) H& ?, H% F3 ?
* d2 p: [# [" m0 l/ X7 {
- ?9 u$ C# J& M8 l以后的步骤照上面的方法继续就可以了) L: b/ @; e4 d1 h$ }
- W- ^0 J. q: u* e& e2 a
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了5 y7 f8 ]/ y/ `( Q1 j
: Q% c, V/ J/ N" V5 O& }
因为kernel32.dll的大小不一样。
, g9 d! V7 l6 r% K0 q/ E! r
/ O6 j) R* n4 R* W, j. B5 i2 ~3.修改originalfirstthunk
  a! k1 v9 H! d8 b$ k' b6 x4 l/ W2 j: s. ^7 A4 I
如图所示
: g; Q- }. I7 }$ `! G, X" U
% C  T& ~0 y/ s  n2 [& W$ N* c, f9 @+ Z! _7 Q, o; ?
我们打开loaderpe,依次点  目录--导入表(后面那个横线)/ Y& \* ?4 v4 R5 P4 y% g2 g( G2 `: e
# R7 u% \9 [5 N: P0 q
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll* t) \: q: g6 v5 d0 B
" A6 }# `' E- B9 O! V
我们右键--编辑--把函数后两个00修改为FF( L6 N: l( M* ?( z
% N7 [# c9 p' A" ?" Y* k9 }) }
这样可以过小红伞查杀。  虽然会出现错误提示+ [* \& Y' o5 [/ U+ ~/ ^* p9 {

9 b- ?; @" K  a( q但是不影响木马的功能,不影响上线。$ S2 Q# I/ e+ Q

. y" t2 m4 M7 c4.dll后面加20 90法过卡巴查杀0 e4 S/ L5 E8 m) D" H9 q
; W% i( |- b" }: v( [( k' l  s
需要的只是一个c32asm而已,非常简单但却非常有效
% m! N* z/ c$ e* ]1 \/ B9 h, N. F. o; E; p( C9 h! w' ~& x
如图. P; D# O% x  F0 s1 ~
" n' G1 m: b0 f; h
' k+ ^2 i) b6 H" y# l1 X4 Z$ g3 f

) n- G/ u$ C' }, S我们可以看到,6 f' }# W; O5 `' [# s

# w# Z1 i9 x" ~0 G% v在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 903 I& u% |% l, ]7 p0 O3 I7 V
6 y0 T0 S# `/ e9 T
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection$ a7 f; P7 H# v. r; z! G
* P( ?; c! m0 \* L! V6 M
我们只需要在他的所属dll后面加个20 90就可以了. y, O7 _* p1 }' B
# L1 V2 ~  P. y0 D) e* [- y1 P4 T
卡巴目前还不查杀此免杀方法
% f/ {" ^1 w8 Z, H7 ?: \+ w1 w/ I8 u" P: b* i) I7 ^, _( ?: Y+ ~
6 ?' J8 B, f/ K7 S! q
唧唧歪歪这么多,打字有点累了
, E, q# G' g" u! c2 W7 d5 I& e) J$ k. f6 Z% R! h# m
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
/ S/ c; f  L5 H& _
. }' L6 \) t! V  y; {[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表