어플리케이션 분석을 위한 기본적인 절차대로
APK파일에서 class.dex파일을 추출한 후 dex2jar을 이용해 디컴파일 해줍니다.
이후 jd-gui를 이용해 디컴파일 된 파일을 열어주고 본격적으로 분석을 시작합니다.
쓰기권한, 메세지 읽기, 메세지 받기, 외부저장소 쓰기, 등의 권한을 요구하고 있죠?
자세한 권한은 아래의 링크에서 찾아 보면 됩니다.
developer.android.com/reference/android/Manifest.permission
만약 if문에 걸리는 권한들이 없으면 그
[*] 동작에 필요한 권한 확인 및 사용자에게 요청
[참고] 과도한 권한을 요구하는 어플리케이션은 악성코드일 확률이 높습니다.
안드로이드의 배터리 최적화 기능은 배터리 소모를 줄이는 것은 좋지만,
앱 동작에 문제가 되는 경우도 많다. 그리고 배터리 최적화 정책은 모든 어플리케이션이 적용 대상이다.
[*]
악성코드가 배터리 최적화 상태에서 동작을 하게 되면 중간에 문제를 일으킬 수 있으니
배터리 최적화의 화이트리스에 있는지 검사를 하고, 없다면 해당 앱을 화이트리스트에 등록한다.
(배터리 최적화 대상에서 제외)
[*] 디바이스를 구분하기 위한 고유 번호, 휴대폰 번호, 휴대폰 버전의 정보를 elelu.get으로 넘긴다.
elelu.get은 C2서버로 보내는 역활을 하는 메소드이다.
휴대폰 정보를 읽어들여서 url의 파라미터와 인자를 셋팅한다.
이후
C2서버로 휴대폰정보를 전송하게 되는데
코드를 보면 C2주소를 ppvpp에서 불러옵니다.
이 함수는 dex.class에서 찾을 수가 없고, 라이브러리를 따로 만들어 놓은 곳에서 불러옵니다.
[참고] 라이브러리는 /lib 폴더에서 확인 할 수 있습니다.
v7을 decode한 값이 C2주소임을 알 수 있습니다.
( so파일을 동적 디버깅할려고하니 환경적인 제약이 있어 하지 못했습니다. )
[*] 이 so파일을 디버깅해보면 C2서버주소를 알 수 있습니다.
위와 같이 휴대폰정보를 탈취하게 되고,
다음으로 메세지 정보를 탈취합니다.
[참고] SMS가 도착할 경우 Broadcast Event가 발생합니다. 이것은 BroadcastReceiver를 통해 수신할 수 있습니다.
그러면 아래의 코드는 이벤트가 발생할때마다 호출 된다는 것을 알 수 있습니다.
메세지가 받게 되면 if문 안으로 와서 다음과 같은 행위를 진행합니다.
[*] 메세지 몇개가 도착했는지, 어디서 보냈는지, 내용은 뭔지, 언제 도착했는지를 기록합니다.
기록한 것을 또 다시 C2서버로 전송을 합니다.
결론적으로
[*] 핵심 기능은 사용자의 메세지를 계속해서 탈취하는 것입니다.
'Malware' 카테고리의 다른 글
불법 성매매앱으로 위장한 악성 어플리케이션 (0) | 2021.02.13 |
---|---|
금융 정보 탈취 악성코드 이모텟(Emotet) (0) | 2021.01.07 |
HWP Malware containing COVID-19 contents By Lazarus (코로나19 악성코드) (0) | 2020.11.25 |
FIESTA2020 Stepin-3 (매크로 악성코드) (0) | 2020.09.16 |
신용카드 정보를 훔치는 POS 악성코드(Alina v3.4) (1) | 2020.08.28 |