返回列表 发帖

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

最近和一位木马免杀牛人交流,感觉新增进不少,/ ^# ~0 w( g) G, f3 T

: R2 N% ^2 N! V特拿来分享给大家。% t/ H2 W$ N# e* F2 a

. V' o, m3 b1 o, O; W$ b7 @- Y; f今天我们不提我们国产的那些杀软,真的垃圾的要死,& [1 E, x1 g6 V! p

- a2 V3 e/ {# m7 W上次有位朋友叫我帮忙做上兴免杀过瑞星,说内存特征码定位在输入表
2 C. p3 ]( t8 h2 m: ^: ~' h3 r' O! e9 Y( j/ Y* b
我简单的重建了输入表就把瑞星搞定了,3 j( L' V8 Z& s: I

- A, }& A8 b* p  b$ J, ]1 P失去信心了。我曰
9 N3 y3 g# p2 Y1 J; E
6 A/ P( U5 S6 S' s今天我们说的是免杀输入表,以下是我的经验,也有牛人传授的免杀方法。- w- D: ~7 H8 w
- r# K. g# [, Y0 X5 h. }. z. Z
首先,大家要知道一点,国产的都没有高启发式扫描,瑞星,金山等都没有。0 [8 q0 K- a- ]. P5 Z3 R, y' g# }
" \. x: \/ I' V7 n2 A& v3 [1 R3 _6 Y* W
外国的,如nod32,卡巴,小红伞都有启发式扫描,尤其以卡巴的高启发式和他的2009主动防御难过。2 K$ N; H9 j7 @7 O+ G

) y. ?  }+ |2 y高启发式扫描必然导致特殊的特征码,我建议新手朋友做卡巴等免杀的时候,先把启发式调到最低
7 j4 ~8 }) r1 C' s+ P4 [" k
! p. y+ b; c4 N, {" n; Y4 C过了以后再调到最高,再做免杀。
3 b, V% p' p. `7 N6 Z/ B* y( t4 d% L  q- O9 L
以上是废话,& X; g3 J/ O) h* p
: k$ I! J  I% z% R+ {4 j. k
好了,下面我们来说下常见的免杀输入表方法。
5 \3 A* \5 n2 n$ T- X) g- B- k& Q2 @3 R, `8 q2 r5 n' y" m* y& o
一。移位法
0 r# A% @% a% u5 R  G
; `2 m8 |: E% x这个已经过时了,我们的国产杀软及时的跟上了时代,
5 e! W% e& V6 Z  f8 M8 d. A0 D  Z2 W( w4 E# i( ?) i7 w
移位法在去年过金山和瑞星,还有江民都是可以过的,( @3 K4 P% t  `' w

( N5 @# l( ^% A8 a! R现在的杀软智能化了,移位么?呵呵 ,追杀你。
; k5 v) V0 K8 z( `# @# R1 a" C* G
# x8 _% ~- e. j4 m4 R0 @如果你想了解怎么个移位法,去百度搜吧,大堆的老教程等你看。
/ V3 b/ j! ]( m+ D
  t, o* p4 l# l6 T* m0 V) m1 E二,重建输入表
6 h7 o, ~, [  @; w; m3 c: Z- J. ^$ _8 o; v7 g) H
效果不错,这里说下,简单的重建输入表,还是可以过我们的国产杀软的,外国的就不行啦。哈哈; J- Y3 ^1 t+ T5 E2 }$ T
8 V: L9 _7 k) p$ {5 F
这里我介绍下,
, A& N) I: R( Y
; S$ D6 I: r; D3 U# R  P$ h; Y' `用到工具:4 S& t6 k5 A4 s
importrec1.6
( m, y& V. a- I. a2 S* r' Kod
" `  Q& v. \7 h7 `' v2 A# Rc32asm
4 e( G2 F. Q1 d; B* O& dloaderpe
' j6 U, V8 s1 @2 E这里我们简单的介绍下,如何重建输入表1 q5 m# c, n, h9 o7 c" m6 u

) ~& e, }  N- D9 O4 l$ W首先吧文件拖入od,打开inportrec1.6
' ]6 C3 n; L$ \) v% F% T; N# x  Q  A- G0 k
如图 选择拖入od的程序,! W3 {; G2 _  i7 E; }
2 J) a  _2 H* v+ d8 o0 Q" m
5 H2 v. Y" z  q+ z
这个时候,我们打开loaderpe,/ k; p$ G# V0 h, @3 I) X  {' z7 P, H
, p; o; \& N1 B# y& K! p& T3 s9 n8 g
拖入我们的木马' z$ {& V* u6 L+ @

' T1 T7 [7 @- j8 U' G5 Q9 t! a选择目录,
; M/ O$ L' c1 a2 [. T1 T+ O$ R' _; b9 l8 p
我们看到导入表这里。。。0 b. E9 N& h6 m! |6 N" D

  A4 b: j+ b9 k! k! d, a" h如图:; W1 _& \0 V/ o+ S* D' Z/ P. F& A

: Z' e$ B4 H3 z4 w" D% e4 v0 F- O5 K( N' H) L7 |. q
RVA地址是0001D000  大小是0000154C
* Q/ ]3 Z+ }+ [2 u1 m+ D* G- F2 P- z" p, L0 ]
好的,我们把这两个输入到import1.6里去
8 I9 }: |' ]- d2 H5 Y. E, _  {$ R1 W
8 s% Y# _* o. M8 c就是在“加载树文件”那上面一点
+ Q9 L# c4 w* x4 N$ C6 p: c
# j/ Q8 q* B. z+ ?+ W1 `' v输入RVA的地址和大小。
6 c' I" k/ L) ~' S
% L! a2 F* A4 t, L点击“获得输入表”
8 e9 D2 @, p7 G# s5 K
& l5 ?8 Z/ M5 D! ]$ m# g然后点击“显示无效的”: `1 ~/ s& g7 d" P' C/ f

- ^+ g& v% V( G- K3 C- m& s接着importrec会自动列出- Y$ r' F7 J6 y( D4 r8 |- W

2 b9 H0 V4 N0 J5 N  E3 \* P: E6 B我们把深蓝色的字体  右键   剪切无效的指针
) {$ u6 W3 {( X0 p) f3 H6 e. ^% j
1 J2 ^" ], P, G9 n. y5 P2 l6 Z2 i
' C: Q8 C5 M' ~& L最后,我们点“修理dump”, D! R% |! t- s8 W0 S6 _
/ E4 O0 H% r- }* M1 A
选中我们的木马就可以了+ B9 m8 F" x: C8 j8 `9 \

/ }$ E0 I7 @+ A) w( v8 N最后我们要用到c32asm
- t/ D$ Y9 |/ e) H, S7 j; B& o- [$ ?) d; o# @. v3 b3 D1 ?
我们会看到两个输入表,我们只要把原先的输入表全部填充为00就可以了。( G$ O3 ?% r! r1 \5 J; M$ h

$ b, c6 S; ]* o& b: k这样做,只能过国产的杀软,外国的 如卡巴就免杀不了(如果他的特征码在输入表的话)
+ q1 H) \) ^7 F% r1 ?# A% q7 V6 K3 @+ q0 z; @2 |  E5 s
这里,我教大家一个方法,也是重建输入表,可以过卡巴,不过加了个小步骤,9 o7 T; v9 [# r, G0 \5 |! \
( `. }! i& y3 a  T" n! s" x
我们把马子拖入od的以后,打开了importrec1.62 T: \3 ~3 o: m6 G& S1 h$ v
" w' B, P7 ]" h$ W; ]/ J; z- b) u
在选项那里,选择根据序数建造输入表和创建新的IAT
& ~# f& L0 b( W: o. s& V* E$ d6 J. w5 u5 Y
如图* Y" {/ A- u: _  `0 }5 ]0 o
4 E& B8 V$ p3 q: t) D; {' r

9 W7 m# [8 J) c+ n3 L以后的步骤照上面的方法继续就可以了. l$ k' O' p3 {
0 W7 e- u7 ^5 W5 b4 G
不过此方法有个弊端就是,如果你在sp3下作的免杀  生成的服务端会在sp2的系统下运行不了
- Y" ?( U" z) X5 ]
- @1 s% T0 @- t* a4 j因为kernel32.dll的大小不一样。
) b! D  c7 p2 Z* L* m. f* K% U' I+ r% ?) C
3.修改originalfirstthunk$ D: }; p+ \: e8 v9 y) e
/ I  m5 P% h6 O# K1 \7 @* g+ g) V
如图所示
5 c8 x3 @) {, q! e0 E) E/ H' s
5 D- h3 O  H5 k7 j0 X' l. I
6 n: j4 f9 l. E& N# S9 c* t我们打开loaderpe,依次点  目录--导入表(后面那个横线)
& t; G8 h4 A0 ?: f8 D; K; w6 E2 H" W* j4 |7 P% S" ]# o: k
我们可以看到所有的dll,如图,我们假设杀软杀的是wininet.dll
4 ]: M; X* I7 p' k9 O
( E- w5 ?0 |8 ^& {# W& B0 ~我们右键--编辑--把函数后两个00修改为FF2 S% Q6 o* p" \9 Q$ _# O5 P8 y! v

) v1 h) x  j- }8 o' t这样可以过小红伞查杀。  虽然会出现错误提示
# x  S6 I5 ^8 }7 r6 I" n, h7 x% {% w
但是不影响木马的功能,不影响上线。  y* y1 z0 C0 L' e" _  C
6 c2 K; C. u3 h- F1 z: ?
4.dll后面加20 90法过卡巴查杀
" X; N7 I' V$ E# M2 x) e. q9 i; d% D; ?2 l( m
需要的只是一个c32asm而已,非常简单但却非常有效$ T3 Y) f! K2 f4 D' C' |

: H3 ~4 T' c% E$ T* a  S' Z如图( p, {; X4 d# Z# U9 M2 N' p6 a0 i
" c  x8 G+ A0 w7 g8 c# ]

, B$ \( O$ g5 S! i* \
: b4 u* g- `* Z* z( I我们可以看到,
1 f3 e) c& j5 Q( o$ ~; T9 y" K* z
在ntdll.dll后面有一个空格和一个问号   对应的ascII码是20 909 ?' T# p' @" M0 a+ _

3 V# p+ h" {! Q* V+ B8 C! ^/ S这里假设卡巴杀的是ntdll。dll下的函数ZwUnmapViewOfSection- H' Z+ E+ {8 _3 r

2 T* u: T( I+ l; w7 D3 p% N& a4 p我们只需要在他的所属dll后面加个20 90就可以了
1 j% r+ K, N& ~. o( o& @+ v2 c( C* ]4 z% K/ Z) q- }3 l' M6 C& f
卡巴目前还不查杀此免杀方法
$ x2 i( e- u+ Q& {* a: Q+ Z/ O2 U8 i
, w# D7 P7 V; J& i5 ?
0 X+ H3 R! e# W! u/ A) p9 p, G唧唧歪歪这么多,打字有点累了/ ~: M3 t8 u4 C$ k
: U- j0 q8 m$ w: G8 O1 s% ?
以后有新的免杀的方法我会继续公布的。暂时先写这么多吧。
: |( |5 u9 S$ `. |/ W3 K8 n9 b' r# c; z; j  t( J7 O# p: @  n
[ 本帖最后由 1335csy 于 2009-3-31 11:35 编辑 ]

返回列表