返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,
; w/ A1 f5 J$ @8 h# M( Y' k; Q& m0 ~) E# z
特拿来分享给大家。
) t$ D6 _( E, p
" L5 |- k, U' e; N$ v* M3 _* v今天我们不提我们国产的那些杀软,真的垃圾的要死,
1 x' G! L9 y4 a* L) K1 T
0 }: _& \# L( K  \( C# d! [! P! p上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
7 [* j2 S3 K& i& p
( w, Y- Z  g8 N1 v+ R我简单的重建了输入表就把瑞星搞定了,
( g0 n. z7 v8 X7 L+ S
* n: Q( ~2 R1 F失去信心了。我曰5 }; n7 O% I  N( s9 e" D

) M6 R( m/ @( ^2 A; D! ]( C. P! I今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。7 |7 C9 F5 G$ R* l) Z8 ]

/ E( N) ~0 }% O3 A首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。
( G* l5 w! _6 C6 C6 [$ f& j" l+ B% f. Y, d6 t
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。( ?- A6 O( U, e  Y2 m

1 L' ?" |5 \0 o: Q& T高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
5 V) H+ c# j7 g. X) o. x
, K2 O! x* W7 K& }1 g9 B6 A过了以后再调到最高,再做免杀。4 [) p6 ?$ F1 I/ x% G: E

4 O. i" y- Q/ L, ]以上是废话,$ B" J4 U# M) V, ?& O( j

) y" \  F" c! W) c( |$ r好了,下面我们来说下常见的免杀输入表方法。* x$ B! e( l" o2 W

; [" Q% W$ f4 c4 L7 f一。移位法
4 L1 g) E8 F9 w8 n* V) P5 S
: O% }0 e( Z/ b6 K% ~) Z( e这个已经过时了,我们的国产杀软及时的跟上了时代,. f% `, a) r1 P* ]& @2 d4 ~+ c+ o" v! S

3 G4 r, u# }( c9 Z2 r3 v, j移位法在去年过金山和瑞星,还有江民都是可以过的,+ `* m- z2 a; @

7 T  W; D" }/ f% L& b; P6 c现在的杀软智能化了,移位么?呵呵 ,追杀你。
% u( l0 Z" ?) J% u
/ l" Z" J( u, p, ?. Q6 A7 S如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。& L6 [2 @4 Q& [2 {! V4 s- T& x

8 T% f4 W' j3 P! e5 j, J" C: N二,重建输入表
5 l; V/ J, c. Q- l) g, n5 n$ t# s% h6 F6 w" s2 |
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈) O" J+ D! X2 g# _/ w: f

( _: q6 M4 M1 p# S6 r: Q1 d这里我介绍下,
. L$ ?2 o' C/ t( A2 G4 D5 \
! t+ K' l) t8 `  L用到工具:
- V: `2 @6 `$ x; k- M% |3 simportrec1.6
8 Z% g  o0 K2 G  g8 bod
; W) L  ^/ o1 M- E! `! v0 A0 hc32asm
5 {" M& a0 ?7 b6 m  z  P" @loaderpe
' S3 R" W( D5 n- ]这里我们简单的介绍下,如何重建输入表
# a# I0 I  \+ ~2 m4 T3 a0 c* w# s. I0 h( B" R6 t) u
首先吧文件拖入od,打开inportrec1.6
3 J9 i# _( O& M" X4 E  `! [: P* H+ P: ?9 b* r( @9 h" M0 R
如图 选择拖入od的程序,/ ]; ~1 k% @1 Z7 P6 D! n! X
9 ~, z5 b8 u. q
: p* M2 d6 o0 d5 `( z% O+ e4 }
这个时候,我们打开loaderpe,
( F# B# J: u5 U2 v" Z5 M
2 C! T  C* E, Q& v拖入我们的木马  ^7 C3 |( K* q5 c% c
2 @8 W+ t+ x+ y* b
选择目录,
$ a( e* m3 G- B  Q* n
/ R. [1 D3 ~0 u9 e我们看到导入表这里。。。- j' `# Z- y2 E4 N, s

% F$ ~& y9 C( Z  f9 |如图:# B) D; `3 X% ]. I1 @6 b
  J: ?$ k# y6 g2 b' V5 c

3 `3 C- f1 d: }0 ?; S% C8 gRVA地址是0001D000  大小是0000154C+ v/ H5 }7 K1 Y! |- m) h5 m! m
2 n/ y0 q1 n' L! t0 H6 w0 F! }
好的,我们把这两个输入到import1.6里去
! W0 B2 ?$ U& i# z! m) C7 F, n6 U: T' X# d/ {* S5 h2 [* [3 a0 c& z
就是在“加载树文件”那上面一点
: b: t& G. ]: b0 m2 S/ K9 [, F1 j( ~- Y- h
输入RVA的地址和大小。. F& P8 r( p0 P7 ^5 l0 U
) W( u$ L0 E4 {* z
点击“获得输入表”
* E" O% a5 C2 C: {: H5 y3 j' {$ z( F6 E# z8 J. R5 J+ i
然后点击“显示无效的”
3 P# r- q$ {1 t
$ [" c# F+ v1 ~  L接着importrec会自动列出
1 {& z% R5 K3 U& d
0 k8 w' S8 i$ |2 @% l我们把深蓝色的字体  右键   剪切无效的指针3 I% `: f" F7 s& P- q
2 y4 M3 X. ^2 J3 c( n
  ~& u4 O, o0 \% O$ i) {8 K/ V- H
最后,我们点“修理dump”
* }# x1 K) j  q6 a- p" v) o& D3 `  N: |  A6 {  _7 ~
选中我们的木马就可以了
& |1 I2 ^: S, |% R
% X- ?( P4 k5 C( a; M最后我们要用到c32asm
' i% |' O0 ]# C4 r7 _0 n# Z9 I5 J% F3 E( M5 ?. L
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。. Q2 ^, G" m4 Y0 w# U
' N9 n  k: p- q$ M# ]- A  C6 g
这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
; H& Y$ }8 y0 [- W5 A- C% b; E7 h% R/ d: R9 a3 ^: z
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,+ w! f* C3 f, s% u( Q/ P) H
1 p7 V1 \$ I/ Q  q- T) P
我们把马子拖入od的以后,打开了importrec1.6/ G* \5 U5 o3 e$ Q3 S( E9 {& d( U8 C

& S4 n- E7 [, i4 e/ k+ r  I在选项那里,选择根据序数建造输入表和创建新的IAT
+ R$ P  y6 R; z3 y6 m/ S
* v2 m, E+ t" U- u" T  Q+ q; Q如图
: Q$ X; f2 [; c( L" @. z* M8 j
7 {6 Y0 c! E1 N4 m" R
2 Y7 w( J0 T6 g$ p7 D. S. ]: H以后的步骤照上面的方法继续就可以了5 u* x  g, A6 L2 r1 S" b; e) C
  N5 `$ }2 ]* s2 {( G- d
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
+ M& g; L) S# O, V
  a) s/ C5 f" i' ?2 N8 a因为kernel32.dll的大小不一样。$ l' H$ v( d6 }; q# @& C+ q
# |6 _2 q- I! p3 ?  K1 a8 Z4 v
3.修改originalfirstthunk. w! E/ k8 y1 B1 I: C

) ?7 X$ J0 }" g9 J/ X8 }如图所示/ o* C2 R+ A4 S# q( U; s
% \1 p' g# Q/ `, J
( ?$ S: V3 a: A4 h% E2 S
我们打开loaderpe,依次点  目录--导入表(后面那个横线)
- ^* ?$ n, `: @- Y) c# Y: y- f2 Z* Z3 C
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll: d7 H; h8 H) B& C( n5 w3 [' G
, L& P' k/ A( W- V3 O( u: k
我们右键--编辑--把函数后两个00修改为FF& [1 m% a9 a6 k$ f

4 d! |' |9 S" \) Q# a% k+ u. k这样可以过小红伞查杀。  虽然会出现错误提示
5 S) g% L) G) j# s' w
6 m1 t0 {! O5 R: A" L6 h, k但是不影响木马的功能,不影响上线。; ^2 @5 B5 _! D

" D8 j9 G# \9 h4.dll后面加20 90法过卡巴查杀
" X, n) {3 n" [5 X! b- d. {, f3 v$ J9 Y8 W$ U" A& Z
需要的只是一个c32asm而已,非常简单但却非常有效
, i% y. V+ U8 }' x' w9 N& ~0 G
2 K7 ^7 k/ a4 _/ u; o" q* J如图0 B6 h9 S( l; s. d0 f

4 U' f) n  n" ]5 A5 k
1 p9 _) H* Y6 E1 P4 V6 P! C9 w, S9 z) }! x3 L1 p  y
我们可以看到,4 _8 c" j  h- Y+ x# R' @& q
  l5 i5 `# [9 Q2 l4 l+ s. \( N
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 90
3 t& f/ ?' @* B, O' K9 |& o0 t" V
这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection
) l5 v6 {: i: T& U0 K8 i% t2 ]* X; ^
我们只需要在他的所属dll后面加个20 90就可以了$ @5 U  v+ |  _- q
' r7 e* y" W: l; d
卡巴目前还不查杀此免杀方法) n8 C8 O$ ]" p8 i$ r) b/ e5 N

1 [' l9 ]& c+ B2 h8 u
, d. d! D5 V0 S1 I9 S3 w$ g: S4 Z唧唧歪歪这么多,打字有点累了$ I( c+ h0 W6 P; u9 h* m' ^
5 b' [3 a& y$ e6 l1 v
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。" H, b8 s2 y" F) X0 W; v
% `& s* w4 A. N" c3 }
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表