리버싱/악성코드 분석

0x001 스미싱 앱 분석

s3ich4n 2017. 11. 29. 03:29

어느날 갑자기 문자메시지가 왔다. 뭔가해서 봤더니 스미싱 문자였다. 공짜로 악성코드를 분석할 기회가 생겨 바로 분석을 하기로 했다.


(그림1) 어느날 우연히 받은 스미싱 SMS




해당 링크에 안드로이드 User-Agent로 위조한 후 접속하면 다음과 같은 링크가 뜬다.

안드로이드 User-Agent는 넥서스 4로 위조했다.


(그림2) User-Agent를 위조한 후 접속한 피싱사이트



접속하면 다음과 같은 웹사이트가 나온다.  CNC서버의 php 로직을 테스트해본 결과, 스미싱을 당한 본인의 전화번호를 입력해야한다. 수차례 다른번호를 입력해봤지만 작동하지 않았다. 아래의 패킷은 다운로드 받을 때의 패킷이다.



(그림3-폼에 맞게 전화번호를 입력함)


(그림4-패킷2)



필자의 전화번호를 입력하면 특정 주소로 리디렉션된다. 그 후 자동으로 apk파일과 조잡한 수준의 경고문이 뜬다.


(그림5-다운로드패킷)


(그림6-조잡한경고문)


Virustotal에 업로드한 후 확실히 악성행위를 하는 악성코드인지 분석하도록 하였다. 결과는 다음과 같았다.



그 후 JD-GUI와 웹사이트에 있는 자바 디컴파일러(http://www.javadecompilers.com/)를 이용하여 디컴파일했다. JD-GUI는 몇몇 메소드를 정확하게 디컴파일하지 못해서 다른 디컴파일러를 사용하였다. 결과는 만족스러웠다. 아래 설명할 소스코드들은 CFR, JADX을 사용해서 디컴파일 하였다. 해당 악성코드는 다음과같은 파일구조를 가지고있다.




(그림7-악성코드 클래스들)


MainActivity에선  내에 파일 생성을 가능하게 해서 Victim ID, SMS_BlockState, TEL_BlockState, 공격자 CNC 서버의 주소를 담고있는 Server_URL 담도록 한다. doRegisterUser로 현재 Victim의 전화번호, 통신사정보를 가져와서 CNC 서버의 주소와 php의 파라미터로 대입하며 HttpUtils의 requestData2를 호출한다. 그 뒤 Victim의 전화번호를 request하고 서버로부터 JSON 형태로 얻어온 response를 리턴한다. 그런 백그라운드에서 악성행위를 하는 PreodicService 수행하게끔 하며, 메인 액티비티로 관리자 권한을 얻도록하는 RegDPMActivity 수행하게 한다. 권한을 얻고나면 액티비티는 사라지며, 백그라운드에서 작동하게 된다.



(그림8-메인액티비티)



(그림9-doRegisterUser)



(그림10-requestData2 (1))



(그림11-requestData2 (2))


그런다음 doScanNet을 호출하는데, 이 메소드에서는 서버로부터 적절한 응답을 받았다면, JSON 오브젝트를 얻어서 문자메시지, 전화관련하여 상태를 세팅하고 doScanNet을 계속해서 부른다.



(그림12-doScanNet (1))


(그림13-doScanNet (2))



이러한 작업을 백그라운드에서 작업하게 하고 표상적으로는 관리자 권한을 요구하는 것처럼 다음과같은 액티비티를 보여준다.

사용자에게 액티비티는 다음 화면으로 보여진다.

(그림14-액티비티: 권한 요청)


(그림15-그림 14의 소스코드)


권한을 만약 성공적으로 얻는다면 공격자는 onReceive라는 함수를 통해 CNC서버와 다시한번 더 통신을 수행하는 것으로 보인다. 문자메시지를 하나 더 보낸 후,  Victim의 번호를 가져와 URL Encode를 수행하고 로그를 찍는다. (해당 행동또한 캡처했어야 했는데 필자가 다시 시도해보았을 땐 CNC서버가 이미 죽어있었다....)



(그림16-onReceive)


그 뒤부터 공격자는 Victim의 휴대전화로부터 전화 송수신을 캐치하거나, 연락처를 SQLite 형태로 저장한 뒤 외부 파일DB에저장하거나, SMS 문자메시지를 캐치해올 수 있게된다.



(그림17-CallStateReceiver)


(그림18-CallStateListner)



(그림19-contacts)



만약 Victim이 공격자가 유도한 사이트에 대해 정보를 입력하고 앱을 설치한다면, 공격자는 공격에 성공한 것이다. 다시말해 공격자는 Androrat과 같은 공격툴을 통하여 Victim의 모바일 디바이스에 대한 제어권을 얻을 수 있을 것이다.