返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
+ Z+ w. L; H0 R# [5 }: {0 E4 Z5 m( n4 w. t$ i) q
特拿来分享给大家。- v* o3 T" U1 k+ y/ W

( C" j$ B/ S- O; z+ [, G今天我们不提我们国产的那些杀软,真的垃圾的要死,2 U7 n0 i$ B4 P

. c7 [; J# V& D# g$ j, E$ S; Q( y上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表, {% |# v/ X* ]; z+ H6 b
0 e3 e5 t; f# p+ v/ {# j
我简单的重建了输入表就把瑞星搞定了,
7 g! Z4 M* {( v6 p
2 r" R/ Z, S9 o- n4 w$ L# @: V失去信心了。我曰
3 k3 x7 T1 i$ ]+ S) w  p. I# N
% d3 T6 B/ i4 \" L今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。  _. [" D& @; I$ b8 Q
; r- i  r7 {0 T# v2 e
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
- V+ G4 R! z! w+ `$ E; {
7 l# ~9 Z# e: W7 X; m/ V3 D外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。' n9 d3 ]) x7 V& |: w$ g2 p; j
7 h! p/ F8 _/ v, I! g
高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低2 s' e# [# G( ^9 j/ w% v. g
* T9 j& O; {: }" ?5 }7 c, T# f& @1 @6 P
过了以后再调到最高,再做免杀。" g4 T, s5 @6 a& ^
. K5 L/ S. q+ p
以上是废话,
6 z* r: v$ t7 o( _
/ A/ b" D/ ~* [/ X& J- J好了,下面我们来说下常见的免杀输入表方法。
2 R. d0 N. P& k' S+ Z7 w* j
( N% u+ X6 Y" Q. {+ [一。移位法
0 n2 W  j7 i9 C8 G" g; d2 {) |
- I; M* z8 Q/ ?- r5 `这个已经过时了,我们的国产杀软及时的跟上了时代,$ G& \7 h! z, d1 f0 p. c) g$ E
0 Z( u  n( b+ P1 p
移位法在去年过金山和瑞星,还有江民都是可以过的,
; C! V: t5 _) C9 ]0 W9 a& i6 W; Q* V( O, i7 w3 s9 r" v( t
现在的杀软智能化了,移位么?呵呵 ,追杀你。0 K; m5 s  B; J) x
8 h4 Y6 j% Z9 e; ~) D# s* w" ^
如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。1 b2 I3 B, K: t  [
) {$ a  U3 R) h5 p+ A/ e
二,重建输入表3 o1 q* E8 Q3 @6 h' w$ W0 v

; A! o( k0 f% a4 q- C( }) Y0 z效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈& B; x/ x( C" `6 @7 S9 W
& q/ K( c/ l, a* e0 f. t
这里我介绍下,6 i9 `# i2 G- O) |+ A' l2 G# \& J

9 B+ U# |* L7 F用到工具:* j2 `* `* k" r, ~
importrec1.6
+ n; m+ {; z  ?% ~! R9 Zod2 g7 X3 [9 `$ a) H+ K9 M
c32asm" h' A! S4 V" w" n; i: p( w
loaderpe6 X. _* M6 ], v5 h5 {
这里我们简单的介绍下,如何重建输入表
) X1 O! Q) H6 x$ M8 Q2 `% \
6 q3 E# \! q) X! U首先吧文件拖入od,打开inportrec1.6
, p8 c; J) O# B, D: l: r( T1 ~. y; n* t. B8 d: [  |6 R
如图 选择拖入od的程序,
$ M* }. k* u4 B* S! ~& X
+ w& l: R/ R7 U* q6 N) u2 ~/ E' S
这个时候,我们打开loaderpe,
9 D" `+ c2 H, k1 l* {) P
: P# o  f/ v) ~8 Z拖入我们的木马
2 }. d* L3 L+ {! F" v- _% K4 d% N; v% F( Z6 X  C7 x6 R& d( I
选择目录,
2 M0 s$ e6 q# s( a, r  J" _3 F$ Q  w
我们看到导入表这里。。。
- B7 P! b! K; @& `9 |+ R8 E+ ~$ o* P% B
如图:
  Y0 L* D8 R/ N0 j0 j; t& r2 ^/ V8 D, u5 Q

! J% {5 }+ Y( e- I0 cRVA地址是0001D000  大小是0000154C0 l9 \/ T0 D: ?( e
2 x: r0 M  m, |7 U, M9 a' z& A
好的,我们把这两个输入到import1.6里去) \) I# \' g3 u( e- ~- x/ f

; t8 q0 h4 B. _* p就是在“加载树文件”那上面一点 $ H& j0 \: j# w! }# t# P; Z: I- T

! ~' S1 S6 w* c4 X输入RVA的地址和大小。- f% I- q2 p; \; a* ^, n

& T" c! P0 u: S" f6 y$ _' E8 I点击“获得输入表”* Q9 U% x; m0 T5 g3 I2 j
+ P  G1 [9 d: m
然后点击“显示无效的”
  t' \# x! G. M1 L1 ?8 _& _
8 m- R8 D0 g$ p9 f# N% M2 Y接着importrec会自动列出( G! y! i, K- K% L

( Z! D; ^+ G! C$ n7 n( E7 r: V9 r! G我们把深蓝色的字体  右键   剪切无效的指针* @0 V* [3 B: G$ x  y0 H! B3 T

/ l8 r* A$ {, l) ~4 O; M
5 ?& v, H; E, i最后,我们点“修理dump”! H' D6 W0 x( h  p7 @+ d: D
9 j# ^% h8 A; O6 [7 E' U
选中我们的木马就可以了) Y" N* p' }1 Y+ O* \1 ^

, T2 {* O9 V' b. o: b( i4 P2 q最后我们要用到c32asm
7 g. Z" N1 s' ]5 q0 u/ t7 b) h( b, J# \
+ b5 J$ g/ O. g+ E! P$ z我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。
5 G: g4 F8 y0 Y) r/ F4 V9 R# a) R8 k
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)& F# m: G1 w& F7 W& U

% r7 L' L  n/ q) n* a6 [这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,9 ]2 d6 ?+ ^% I
5 p) i9 g" d( y& C8 T; E$ T
我们把马子拖入od的以后,打开了importrec1.6. ^; g0 d; j) r1 l- O# C# B' S/ p: Q
2 D1 P  I+ Y# ]: D8 Y( n. q/ h4 A. \
在选项那里,选择根据序数建造输入表和创建新的IAT
4 v% j8 f) x8 @1 O2 l% W. N" \
) g9 i4 a" V* K如图5 ^  x, V7 Q" G+ y3 F' V
0 h* N9 \! N- b) y. |# n7 A& J  a

8 L9 t: V2 D- E' h, ]7 j以后的步骤照上面的方法继续就可以了" z& F' U! \" A

# h, g: j$ Y/ l" i( |+ V不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了. q+ r" o8 T. z
' ?- V! L$ j7 k+ F
因为kernel32.dll的大小不一样。5 r, ~: N4 {3 T2 @8 v

0 N4 H/ m( x  t4 l9 l  S" b$ B3.修改originalfirstthunk( A# T7 v8 g4 L- v8 ~
5 M0 h/ ]4 ?& a* v6 ]( W
如图所示
, d4 [6 z( Q% Y6 |; [3 Q6 S" [' `; I# j$ \& r5 P) B6 ^# x0 G

$ E$ m3 o! k8 S& _' P* |我们打开loaderpe,依次点  目录--导入表(后面那个横线)7 [! M8 _  u- t$ m

0 }4 A) Q; E0 s8 l0 p我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
7 k" t! [0 N3 _; i) }8 ]' z9 G3 M" k" I& w" j
我们右键--编辑--把函数后两个00修改为FF+ Y: a5 ~" s$ F- h

( m' \& q/ ]) e5 n" ~2 ?8 g* _. J这样可以过小红伞查杀。  虽然会出现错误提示
7 V$ H7 U( d4 O. W. i# H1 B4 F, i$ o$ |# d  n: g. C! `
但是不影响木马的功能,不影响上线。
% I3 U2 F+ F6 o  A' Y6 W3 k. t; x. |$ z
4.dll后面加20 90法过卡巴查杀
& F& z- v5 m" D
* p% [+ |/ k4 `. z+ t% }2 ?! v需要的只是一个c32asm而已,非常简单但却非常有效
8 g# X9 v- d0 ~. n: `6 D, e" B* E. `8 d
如图1 g. n7 r+ F. `' f: f$ m
- }$ t% z" P, B# j: N. S0 d

% s2 n0 Z, ]& v, P6 H% h! q  O; N
我们可以看到,
: F# O0 g3 m2 q% K) L; S. a' _: U. b5 Q- Z
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 905 v! c. E! g3 l$ V- o, y% d4 l
% i" I0 q8 }' k- }/ f8 n
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection4 z: g9 i3 U# K9 g

4 X! C3 y2 R. A% l4 V我们只需要在他的所属dll后面加个20 90就可以了; l6 h  D' T0 k% {! ]+ l, g

9 u- `7 F& q6 i) ^7 ^8 _2 N: ]/ V卡巴目前还不查杀此免杀方法
6 {2 Z- G+ f- M% u' _6 m6 Q8 N" x% h, t5 [% v! |

4 P  x- y6 d0 d0 P唧唧歪歪这么多,打字有点累了
. ~: t! d+ c- x) d' [5 ?. |2 z% ~* H0 F. L% F7 R4 U
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。, s' M6 _. i6 v5 M3 U* q- y) w$ a
# y" K# z' w9 q# l$ x3 x
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表