[13826] 2019-03-04_基于Linux连接器的审计进程事件实现方案

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-18
2019-03-04_基于Linux连接器的审计进程事件实现方案 L i n u x z h o u q i a o   F r e e B u f   2 0 1 9 - 0 3 - 0 4   s h e l l h o o k f o r k e x e c p r e l o a d l i n u x l i n u x n c p   1 l i n u x 2 n c p ( n e t l i n k   c o n n e c t o r   p r o c e s s ) n e t l i n k   l i n u x n e t l i n k ( I P C )  
l i n u x 2 . 6 . 1 5 (   / b o o t / c o n f i g - 3 . 1 0 . 0 - 3 2 7 . 3 6 . 3 . e l 7 . x 8 6 6 4   ) C O N F I G C O N N E C T O R C O N F I G P R O C E V E N T S 3 . 1   : d r i v e r / c o n n e c t o r / c o n n e c t o r . c , d r i v e r / c o n n e c t o r / c n _ q u e u e . c c n a d d c a l l b a c k : i d     I D   n a m e     c a l l b a c k   " c n p r o c " , c n p r o c m c a s t c t l c n p r o c m c a s t c t l : P R O C C N M C A S T L I S T E N P R O C C N M C A S T _ I G N O R E 3 . 2   C O N F I G _ C O N N E C T O R = y C O N F I G _ P R O C _ E V E N T S = y i n t   c n _ a d d _ c a l l b a c k ( s t r u c t   c b _ i d   * i d ,   c o n s t   c h a r   * n a m e ,                         v o i d   ( * c a l l b a c k ) ( s t r u c t   c n _ m s g   * ,                                           s t r u c t   n e t l i n k _ s k b _ p a r m s   * ) ) v o i d   c n _ d e l _ c a l l b a c k ( s t r u c t   c b _ i d   * i d ) c n _ a d d _ c a l l b a c k ( & c n _ p r o c _ e v e n t _ i d ,                                     " c n _ p r o c " ,                                     & c n _ p r o c _ m c a s t _ c t l ) s t a t i c   v o i d   c n _ p r o c _ m c a s t _ c t l ( s t r u c t   c n _ m s g   * m s g ,                                     s t r u c t   n e t l i n k _ s k b _ p a r m s   * n s p ) {                 *                 m c _ o p   =   ( e n u m   p r o c _ c n _ m c a s t _ o p   * ) m s g - > d a t a ;                 s w i t c h   ( * m c _ o p )   {                 c a s e   P R O C _ C N _ M C A S T _ L I S T E N :                         a t o m i c _ i n c ( & p r o c _ e v e n t _ n u m _ l i s t e n e r s ) ;                         b r e a k ;                 c a s e   P R O C _ C N _ M C A S T _ I G N O R E :                         a t o m i c _ d e c ( & p r o c _ e v e n t _ n u m _ l i s t e n e r s ) ;                         b r e a k ;                 d e f a u l t :                         e r r   =   E I N V A L ;                         b r e a k ;                 }                 * }
d r i v e r s / c o n n e c t o r / c n _ p r o c . c c n n e t l i n k s e n d   n e t l i n k     m s g     n e t l i n k   退 s y s f o r k ,   s y s e x e c , s y s e x i t c n n e t l i n k _ s e n d p r o c f o r k c o n n e c t o r p r o c e x e c c o n n e c t o r p r o c e x i t c o n n e c t o r t a s k _ s t r u c t n e t l i n k p r o c f o r k c o n n e c t o r p i d t g i d p i d t g i d p r o c e x e c c o n n e c t o r p i d t g i d p r o c e x i t c o n n e c t o r p i d t g i d e x i t c o d e e x i t s i g n a l c o r e d u m p p t r a c e i d i n t   c n _ n e t l i n k _ s e n d ( s t r u c t   c n _ m s g   * m s g ,   u 3 2   _ _ g r o u p ,   g f p _ t   g f p _ m a s k ) s y s _ f o r k - > d o _ f o r k - > c o p y _ p r o c e s s - > p r o c _ f o r k _ c o n n e c t o r - > c n _ n e t l i n k _ s e n d s y s _ e x e c - > d o _ e x e c v e - > d o _ e x e c v e _ c o m m o n - > s e a r c h _ b i n a r y _ h a n d l e r - > p r o c _ e x e c _ c o n n e c t o r - > c n _ n e t l i n k _ s e n d s y s _ e x i t - > d o _ e x i t - > p r o c _ e x i t _ c o n n e c t o r - > c n _ n e t l i n k _ s e n d v o i d   p r o c _ f o r k _ c o n n e c t o r ( s t r u c t   t a s k _ s t r u c t   * t a s k )   {         *         e v - > w h a t   =   P R O C _ E V E N T _ F O R K ;         p a r e n t   =   r c u _ d e r e f e r e n c e ( t a s k - > r e a l _ p a r e n t ) ;         e v - > e v e n t _ d a t a . f o r k . p a r e n t _ p i d   =   p a r e n t - > p i d ;         e v - > e v e n t _ d a t a . f o r k . p a r e n t _ t g i d   =   p a r e n t - > t g i d ;         e v - > e v e n t _ d a t a . f o r k . c h i l d _ p i d   =   t a s k - > p i d ;         e v - > e v e n t _ d a t a . f o r k . c h i l d _ t g i d   =   t a s k - > t g i d ;         * } v o i d   p r o c _ e x e c _ c o n n e c t o r ( s t r u c t   t a s k _ s t r u c t   * t a s k ) {         *         e v - > w h a t   =   P R O C _ E V E N T _ E X E C ;         e v - > e v e n t _ d a t a . e x e c . p r o c e s s _ p i d   =   t a s k - > p i d ;         e v - > e v e n t _ d a t a . e x e c . p r o c e s s _ t g i d   =   t a s k - > t g i d ;         * } v o i d   p r o c _ e x i t _ c o n n e c t o r ( s t r u c t   t a s k _ s t r u c t   * t a s k ) {         *         e v - > w h a t   =   P R O C _ E V E N T _ E X I T ;         e v - > e v e n t _ d a t a . e x i t . p r o c e s s _ p i d   =   t a s k - > p i d ;         e v - > e v e n t _ d a t a . e x i t . p r o c e s s _ t g i d   =   t a s k - > t g i d ;         e v - > e v e n t _ d a t a . e x i t . e x i t _ c o d e   =   t a s k - > e x i t _ c o d e ;         e v - > e v e n t _ d a t a . e x i t . e x i t _ s i g n a l   =   t a s k - > e x i t _ s i g n a l ;         * }
3 . 3   n e t l i n k n e t l i n k   n e t l i n k   n c p n c p ( n e t l i n k   c o n n e c t o r   p r o c e s s )   n e t l i n k   c o n n e c t o r 4 . 1   S o c k e t :   n l f a m i l y   A F N E T L I N K ,   p r o t o   N E T L I N K _ C O N N E C T O R B i n d :   f a m i l y A F N E T L I N K ,   g r o u p s C N I D X _ P R O C 4 . 2   n e t l i n k 4 . 3   *   n e t l i n k   h e a d e r   *   c o n n e c t o r   h e a d e r   *   c o n t r o l   o r   p r o c e s s   d a t a   * |       i d x - - - v a l         |     s e q - - - a c k - - - l e n   |                     d a t a                       | *         c o n t o r l   e v e n t           * |             f l a g s - - o p               | *           f o r k   e v e n t               * |   p t i d - - p p i d - - t i d - - p i d   | *           e x e c   e v e n t               * |               t i d - - p i d               | *                       e x i t   e v e n t                           * |   t i d - - p i d - - e x i t _ c o d e - - e x i t _ s i g n a l   | f d ,   e r r   : =   s y s c a l l . S o c k e t ( s y s c a l l . A F _ N E T L I N K ,   s y s c a l l . S O C K _ D G R A M ,   s y s c a l l . N E T L I N K _ C O N N E C T O R ) l s a . F a m i l y   =   s y s c a l l . A F _ N E T L I N K l s a . G r o u p s   =   C . C N _ I D X _ P R O C i f   e r r   =   s y s c a l l . B i n d ( f d ,   & l s a ) ;   e r r   ! =   n i l   {         s y s c a l l . C l o s e ( f d ) }         m s g . i d x   =   C . C N _ I D X _ P R O C         m s g . v a l   =   C . C N _ V A L _ P R O C         m s g . l e n   =   4         m s g . o p   =   C . P R O C _ C N _ M C A S T _ L I S T E N         s y s c a l l . S e n d t o ( f d ,   & m s g ,   0 ,   & l c a )
  f o r k e x e c e x i t   p i d 线 t i d   / p r o c / p i d ,   e x e , c m d l i n e , c w d 4 . 4   s h e l l , ( 3 E x e c , 2 F o r k ) ,   . E x e c E x e c s o c a t ( p i d   5 8 6 0 ) s o c a t   e x e c ,   :   e x e / u s r / b i n / s o c a t ,   c m d l i n e : s o c a t   e x e c : b a s h   - l i , p t y , s t d e r r , s e t s i d , s i g i n t , s a n e   t c p : 1 0 . 8 9 . 9 3 . 1 1 : 8 0 1 1 E x e c s o c a t   f o r k   b a s h ( p i d   5 8 6 1 )   b a s h   - l i ,   b a s h e x e : / u s r / b i n / b a s h ,   c m d l i n e : b a s h   - l i E x e c b a s h   f o r k   c a t ( p i d   5 9 1 8 )   c a t   / e t c / p a s s w d ,   / u s r / b i n / c a t ,   c m d l i n e : c a t   / e t c / p a s s w d 5 1 0 . 8 9 . 9 3 . 1 1 s o c a t b a s h   - i s h e l l ,   p a s s w d e x e c m d l i n e   l i n u x n c p l i n u x p r o c , / n e t / t c p , f d , s t a c k f o r   {         n r ,   _ ,   e r r   : =   s y s c a l l . R e c v f r o m ( s e l f . f d ,   r b ,   0 )         e v   : =   p a r s e E v e n t ( n r )         s w i t c h   ( e v {                 c a s e   C . P R O C _ E V E N T _ F O R K :                 *                         g e t _ e x e ( p i d )                         g e t _ c m d l i n e ( p i d )                         g e t _ c w d ( p i d )                 *                 c a s e   C . P R O C _ E V E N T _ E X E C :                 *                 c a s e   C . P R O C _ E V E N T _ E X I T :                 *         } } E x e c :   { t i d : 5 8 6 0   p i d : 5 8 6 0 }   - >   p r o c e s s   e x e : / u s r / b i n / s o c a t ,   c m d l i n e : s o c a t   e x e c : b a s h   - l i , p t y , s t d e r r , s e t s i d , s i g i n t , s a n e   t c p : 1 0 . 8 9 . 9 3 . 1 1 : 8 0 1 1 ,   c w d : / h o m e / c n p t e s t F o r k :   { p t i d : 5 8 6 0   p p i d : 5 8 6 0   t i d : 5 8 6 1   p i d : 5 8 6 1 }   - >   p r o c e s s   e x e : / u s r / b i n / s o c a t ,   c m d l i n e : s o c a t   e x e c : b a s h   - l i , p t y , s t d e r r , s e t s i d , s i g i n t , s a n e   t c p : 1 0 . 8 9 . 9 3 . 1 1 : 8 0 1 1 ,   c w d : / h o m e / c n p t e s t E x e c :   { t i d : 5 8 6 1   p i d : 5 8 6 1 }   - >   p r o c e s s   e x e : / u s r / b i n / b a s h ,   c m d l i n e : b a s h   - l i ,   c w d : / h o m e / c n p t e s t F o r k :   { p t i d : 5 8 6 1   p p i d : 5 8 6 1   t i d : 5 9 1 8   p i d : 5 9 1 8 }   - >   p r o c e s s   e x e : / u s r / b i n / b a s h ,   c m d l i n e : b a s h   - l i ,   c w d : / h o m e / c n p t e s t E x e c :   { t i d : 5 9 1 8   p i d : 5 9 1 8 }   - >   p r o c e s s   e x e : / u s r / b i n / c a t ,   c m d l i n e : c a t   / e t c / p a s s w d ,   c w d : / h o m e / c n p t e s t
宿 d o c k e r * z h o u q i a o F r e e B u f
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则