返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,; K3 o. n5 F# B5 D% J# K+ H( S
; o/ {3 S2 E2 i: P2 [7 q' ?1 S* \" r
特拿来分享给大家。  d5 j6 j0 e$ q) z
# T, u* \& U- ~, _: {
今天我们不提我们国产的那些杀软,真的垃圾的要死,5 ~+ H! X! I0 {

- p% f, [# e8 W8 J& G, Z, Z* a8 N上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
9 Z/ g( q& z/ W  K  B4 P4 s8 V( N( ^: `
我简单的重建了输入表就把瑞星搞定了,
0 u4 ]' m, k# ~7 C0 ?0 b
2 k6 `1 {) k4 r失去信心了。我曰* R4 o' c- I* L+ ]* ]8 J% D
7 @- F8 o2 p* o1 Q* a2 {3 c" X
今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。& q3 d! i! g- Y5 n1 M/ x

5 D/ _  v& ?5 R' `* c首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
* @6 T' `! J0 a5 D, z
# R& H* ]5 h2 R& w. l外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。8 w' P: Q. x. t" s# y: I

* H1 q8 r/ u5 ?; ?高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低8 H( K0 Z: o; Q! w; u

7 @# R6 G* T9 q1 B- h4 {: ]# v& w过了以后再调到最高,再做免杀。
* _* l5 T2 v0 m! p# H5 a  ]! N& o$ z, h% s3 q2 k
以上是废话,1 i, }! g9 z% k) `- t7 i5 g/ _6 r

$ ]9 ]7 x5 p' r& ?好了,下面我们来说下常见的免杀输入表方法。
2 p. C& y9 ~$ D: g, m1 y3 I' e3 p& f; R4 s$ F" F- S
一。移位法. e7 g. |6 ^& O

% U4 o5 L! f0 T4 w这个已经过时了,我们的国产杀软及时的跟上了时代,
9 O% f  x) K  H
2 ^8 P6 r( P. P4 ^9 K/ n移位法在去年过金山和瑞星,还有江民都是可以过的,
! A) S* `6 C4 t' X  l4 Z# C1 J, H/ q8 p  L' W  t
现在的杀软智能化了,移位么?呵呵 ,追杀你。/ y% J1 |* ~5 v& A

  y+ ?/ {( C9 ?& {如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
0 A# ]) \# u9 n& |4 r
7 c6 S# e6 N) b1 j二,重建输入表  n, g  p8 _" A% W6 V  G
; o( _2 J' l; m8 y7 J
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈$ {9 |: ?" d/ Z" W& k4 @

/ \2 W- l- D7 w, o6 w6 n这里我介绍下,
* F. J$ Z7 h  Y1 C3 U; p1 v
: D2 q1 R8 ?2 k' z( c用到工具:
# u2 ^/ R, V" ~0 j$ Himportrec1.65 l# ?+ g; E, t% P! p* R* d
od: g( q1 @: n8 q/ \# G; S. R
c32asm
% v( i! q% i8 T& Tloaderpe
; T$ q; m! ^0 V3 b- j! T1 U这里我们简单的介绍下,如何重建输入表4 M  d1 N$ q. ^0 C* O. E
% y7 E& x$ A' z5 k( l; ]
首先吧文件拖入od,打开inportrec1.6. w$ x; U( z4 F: g/ e

  X# g- U  f: ^. r% v1 a# g4 L! d如图 选择拖入od的程序,
+ W. o; b; v2 P2 }$ e
0 b( t1 N! W6 |5 K$ L" ~
3 a# o; \4 ]& n: s这个时候,我们打开loaderpe,
7 f; V% p6 p4 _7 B+ z6 z4 T: E' _( m4 h0 v1 O* F$ t5 }0 ~
拖入我们的木马: M9 W  b/ S& A8 \

. R5 l% Z! B& P" X; x# s选择目录,$ {2 V- C6 q: w9 W

' y& ~% ?7 L0 ~5 {& H我们看到导入表这里。。。
3 G- K- N; b4 F0 W( L( I$ I) Q4 H) X7 q4 k+ R: t7 R% k
如图:7 S3 r8 T- T+ G3 t
# z" a& G  W  {& [0 _3 ~  T

6 d2 ^& Y$ n- s; b+ ORVA地址是0001D000  大小是0000154C
" s2 T9 }2 a. i) F
4 r) I& ]/ C& _* P! f好的,我们把这两个输入到import1.6里去6 @; i7 w& L7 G5 F0 D* @0 V

+ y* t: R0 S/ w0 ?' l7 M  l就是在“加载树文件”那上面一点 ! Y4 V; Z% q& l% g3 y8 b* g
/ ?- B2 S. o- ]& J) d  S4 N( z3 K6 u
输入RVA的地址和大小。4 ?4 I+ H6 d& T% E4 w$ M: g4 F
9 J- {  a* @% A) L) K2 \) j, X: A  P4 L
点击“获得输入表”. _0 j( c6 x2 o% g
2 y: y7 K" ^$ n9 O- y, ]
然后点击“显示无效的”
, k6 v6 D2 Z1 ]6 j: H2 X! {+ ^" [" `8 g) t2 H; e# I: P8 T
接着importrec会自动列出" Q) L) B& U% w/ ^2 }8 S
! c! q0 h) s0 }# Z: I5 r
我们把深蓝色的字体  右键   剪切无效的指针! P9 A4 G1 C* g  h! D0 |: O
' j* _/ F4 w: m& \! c+ i0 V  ]
! @8 h6 Z/ k5 z: s5 V
最后,我们点“修理dump”
4 _6 Y- E/ n) T/ k' |, _: Z, [7 r+ c2 X: X& u1 r
选中我们的木马就可以了
3 A+ d$ h) U- t9 Y; b( l; C/ Y
  G# l8 B3 n7 t6 _8 z) s最后我们要用到c32asm
  l1 G( _( J0 B; [. d& o! F) A1 [& c# A9 _
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。8 q  }+ l3 r7 Q

- W; Q) l2 {3 H$ h这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)# ~/ H6 W; @% B  C
: f6 y: J( `3 z: v8 i6 r. H  g
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,
' c  }+ M$ L( V7 J% }+ c* ]/ w7 m! R4 V/ r8 A0 |
我们把马子拖入od的以后,打开了importrec1.6, @+ q1 s1 r+ ~6 F
) I1 c+ l$ B' Q- ^4 T
在选项那里,选择根据序数建造输入表和创建新的IAT
" s- [  T+ M2 J7 |' |9 e' v2 v7 {" \7 V. ]/ r/ `
如图; t; c- M7 P# g, G7 S# J+ ]1 U: s: j3 t
- I# H' t5 p7 }- X$ F5 l# ?
' y. i" o4 X% ?& `" l
以后的步骤照上面的方法继续就可以了) ~2 z9 b) ~- N  i$ Z- |
- ?/ r) `6 r( n. H  {( _5 l2 G
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了) Y& q+ t: R8 l

  X1 D; O! j. b因为kernel32.dll的大小不一样。4 y  |3 J5 I3 `4 E* e  N

# i8 K, t6 i) G5 r( j$ N, V3.修改originalfirstthunk2 O5 N+ n5 C+ c2 b) `4 n
, y2 X+ q# U  p/ i% N( d" K# [8 A; _
如图所示
5 Q! q" t3 {/ }3 v5 v  \% \
; U( [# I3 Z' T+ `% q2 Z# t3 g3 ?; c' w* ?- a9 d5 H; j
我们打开loaderpe,依次点  目录--导入表(后面那个横线)4 q5 ^9 S4 N1 r- E

8 N1 g. q, c5 b我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll! }$ H  x* ]& Y5 [( h

+ @1 q" y; Q0 }4 u2 D. m, Q我们右键--编辑--把函数后两个00修改为FF
% u8 w7 S- I+ k9 `
4 ~  b- j) c* B这样可以过小红伞查杀。  虽然会出现错误提示
! i! F4 y" K4 ~' P
0 r# ~2 _: k$ K' s但是不影响木马的功能,不影响上线。
( A& t1 N) B: s/ R1 O, M5 y# n& g4 a7 v  L: w
4.dll后面加20 90法过卡巴查杀2 |( M7 e9 v# O

8 c# N# r* i6 V! m; Z需要的只是一个c32asm而已,非常简单但却非常有效
9 G1 e& |) U6 h  I' k
. K  A4 G2 I, J如图' f  H3 l- B& n& S+ |

" J& |6 P* j7 }% }. J3 m& Z* x5 u8 m; o7 r) e3 v2 `: l/ b2 C

, }% e/ `9 W+ \0 |3 M5 O% r' [我们可以看到,
* s! h9 l+ N7 R9 n! f+ ^- v  w8 ^2 g9 z2 j2 g8 Y* D
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
" x1 @& d4 N. A: U2 A7 L6 A- l  H
# ]$ U/ ~: \0 r( h) l2 w这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
! \& ?  e9 I# l' q: {& S: U$ y2 e. n% ~6 Z; d
我们只需要在他的所属dll后面加个20 90就可以了
* |0 D' z% @9 ?( ]- d
9 ]/ f* _& e  t卡巴目前还不查杀此免杀方法- S9 ]6 C7 `! S; U6 a
, o7 X, H: T. K/ L: s# R
3 d% D2 z6 R( Z1 w8 Y2 Q+ r
唧唧歪歪这么多,打字有点累了
) r2 h0 u8 ^, b9 M8 ?7 i9 p/ s# D4 `* B- \% _( j) \5 _, G
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
/ w- W1 K1 p0 s7 h: E
% ~9 K2 P. F! O3 ?[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表