티스토리 뷰

Project

안드로이드 정적 분석 - 3

07VH 2016. 11. 7. 23:40

저번에 .dmd라는 파일의 형식이 의심이 갔고 코드 단위로 분석해 보라는 말이 있어서 분석해 보았다.

그래서 이 부분에 대해서 추가적인 코드 분석을 하였다JEB를 통해 바이트 코드에서 디컴파일러를 실시하여 보았다.

우선 기본적으로 변수들이 정적으로 지정되어 있는 부분을 알 수 있었다. 그리고 나서 Parameter들을 추가하는 메소드(appendParam), InputStreamReader를 통해 String을 생성하는 메소드(generateString), Content를 받아 CharacterSet을 결정해주는 메소드(getContentCharSet), Parameter를 만들어 주는 메소드(makeParams)들이 있었는데 위에서 언급한 것과 같은 기능을 하고 있고 중점으로 분석해야 된다고 판단한 부분은 requestAd() 메소드였다. 시간에 따라서 Timeout을 하는 부분이 존재하고, HttpClient를 초기화 하는 부분이 있다. 거기서 입력받은 값이 존재하지 않으면 의문의 .dmd 파일을 argument로 넣기 위한 변수로 지정한다. 그리고 나서 String으로 format화하는데, 위에서 언급한 makeParams를 통해 Parameter를 만들고 .dmd 파일의 URLParameter를 이어서 변수를 생성한다. 추가적으로 디버그를 해 준 다음 HttpGet 객체를 생성하여 앞에서 만든 변수를 통해 HTTP GET 요청을 보내고 HTTP 응답을 받기 위한 작업을 해준다. 그렇게 응답을 받은 값이 null이 아닐 때를 try catch문을 통해 실시한다. 응답 받은 값을 execute() 메소드를 통해 GET인지 POST인지 어떤 종류로 날아 온 가에 대해서 판단하고 그것을 getStatusLine().getStatusCode()를 통해서 서버가 요청을 제대로 처리했는지 판단하여 준다. 200은 성공적으로 처리한 것을 알 수 있고, 나머지 일반적인 경우들은 다음과 같다. 정확히 어떤 값이 들어가는 지는 코드단위가 아닌 동적 분석이 실행되어야지 알 수 있을 것 같다.



성공적으로 처리된 경우에 String을 생성하고(generateString 메소드), 생성된 String을 통해 각 조건에 따라 달라지는 것을 알 수 있는데 각각 setError에 들어가 있는 경우가 다른 것을 알 수 있다. 그래서 광고 상태를 관리해주는 클래스에 가서 각각의 에러 경우를 알 수 있었다. 서버 DB의 에러, 지원되지 않는 이미지 에러, 네트워크 에러, 알 수 없는 에러, DELIVERY 서버의 에러, SLOT이나 OS의 에러 등이 있었는데 다음과 같다.


이런 setError들이 지정되어 있었는데 getStatusLine().getStatusCode()을 통해 판단한 값에 따라 경우가 다르게 goto하는 것을 알 수 있다. 기본적으로 지정되어 있는 에러는 8이고(UNKNOWN), 다양하게 있었다. 결국 특정 label로 전부 집결되는 경우를 알 수 있었는데, 특정 label로 들어가게 되면 일단 StringBuilder의 연결을 끊고, TextUtils.isEmpty를 통해 null 체크를 하여 아닐 경우 createAdElem 메소드를 불러온다. 다음과 같다.



문제가 발생하면 위에처럼 Exception을 던져주고 이상이 없을 경우 paramString2를 반환하는데, 그 값은 .dmd가 들어있던 URL이다.

 


코드 단위로 분석을 실행하였고, 이 부분에서 안드로이드와 Apache 서버를 운영하는 웹의 통신이 발생하는 것을 알 수 있었고 몰랐던 부분에 대해서 많이 알게 될 수 있는 부분이었다. 분석한 결과로는 악성적인 행위는 발견되지 않았지만 동적 분석을 통해 .dmd 파일이나 다른 switch문을 조정할 수 있다면 공격이 가능할 것으로 여겨지는 부분이었다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함