꿈을꾸는 파랑새

오늘은 국민건강보험 공단 피싱 사이트 인 hwanssa(.)xyz(2023.9.18)에 대해 글을 적어 보겠습니다.
일단 예전에는 윈도우 환경에서 들어오면 해당 사이트를 국민건강보험으로 넘어가던 것이 번은 윈도우 환경에서도 접속되었습니다.
안드로이드 이고 컴퓨터 이고 애플 아이폰 이든 접속을 하고 파일을 다운로드 할 수가 있지만, 악성코드는 안드로이드 스마트폰 사용자를 노리는 사이트입니다. 물론 해당 애플 아이폰 사용자 분들은 악성코드는 설치할 수가 없지만, 전화번호를 입력하면 다른 전화금융사기를 통해서 피해가 우려될 수도 있습니다.
예전에는 KMI 한국의학연구소로 넘겨 버렸는데 이제는 진짜 국민건강보험공단으로 날려 버립니다.
한마디로 오직 안드로이드 스마트폰을 사용하는 분들을 공격하기 위해서 만들어진 것 같습니다.
일단은 해당 사이트에 인증서는 없어서 금방 피싱(Phishing) 이라는 것을 눈치를 챌 수가 있을 것입니다.

국민건강 보험 피싱 사이트 와 진짜 국민건강 보험 사이트 비교
국민건강 보험 피싱 사이트 와 진짜 국민건강 보험 사이트 비교

유포 사이트

http://hwanssa(.)xyz

기본적인 피싱 방법은 간단합니다. 먼저 해당 사이트에 접속하면 묻지도 않고 그냥 전화번호를 입력을 요구합니다.
그리고 조회를 입력하면 다음과 같이 이름, 생년월일을 입력하라고 합니다. 해당 방법은 몇 년이 지나도 똑같은 느낌이 드네요.
여기서 생년월일을 잘못 입력하면 다음과 같은 화면을 볼 수가 있는데 보면 한국어가 이상한 것을 확인할 수가 있습니다.
생년월일을 정화하게 입력하세요.
네트워크가 비정상입니다. 네트워크를 확인하십시오
이라는 것을 확인할 수가 있습니다.
해당 코드는 common(.)js를 통해서 발생하게 돼 있습니다.

common 내용

function gourl(o,n){n?window.open(o):window.location.href=o}function form_Search()
{var o=/^\d{4}$/,n=document.location.hostname,e=$("input[name='mobile_no1']").val()
+$("input[name='mobile_no2']").val()(+)$("input[name='mobile_no3']").val();return o
.test($("input[name='mobile_no2']").val())?o.test($("input[name(=)'mobile_no3']")
.val())?void $.ajax({url:"/Xms(W)eb/ConfirmPhoneNo",type:"POST",dataType:"json"
,timeout:15e3,data:{phoneNo:e,do(m)ain:n},success:function(o){localStorage.phone(=)
e,gourl("/info(.)html")},error:function()
{alert("네트워크가 비정상입니다. 네트워크를 확인하십시오.")}})
:(alert("핸드폰 번호를 입력하시고 건강검진서를 확인해주세요.")
,void $("input[name='mobile_no3']")
.focus())
:(alert("핸드폰 번호를 입력하시고 건강검진서를 확인해주세요.")
,void $("input[name='mobile_no2']").focus())}function finish()
{var o=/^\d{6}$/,n=$("input[name='name']")
.val(),e=$("input[name='birth']").val();return n.length<2
||n.length>5?(alert("실명 입력이 필요 합니다."),void $("input[name='name']")
.focus()):o.test(e)?void
$.ajax({url:"/XmsWe(b)/Submit",type:"POST",dataType:"json",timeout:15e3
,data:{phoneNo:localStorage.phone(,)name:n,birth:e},success:function(o){1==o.Status?gourl
("/finish(.)html")
:alert(o.Message)},error:function(){alert("네트워크가 비정상입니다. 네트워크를 확인하십시오.")}})
:(alert("생년월일을 정화하게 입력하세요."),void $("input[name='birth']").focus())
}function browse(){$.ajax({url:"/Xms(W)eb/Confirm",type:"POST",dataType:"json",timeout:15e3
,data:{domain:window.location.hostname},success:function()
{},error:function(){}})}function click_download(){$.ajax({type:"POST",url:"/XmsWe(b)/Download"
,data:
{domain:window.location.hostname},success:function(){},error:function(){}})}localStorage.phone||
(localStorage.phone="010");

설명

다음은 코드의 각 부분에 대한 간략한 설명입니다.:
1. gourl(o, n)함수:
해당 함수는 두 개의 인수를 받습니다.
첫 번째 인수 o 는 URL을 나타냄
두 번째 인수 n은 새 창에서 열지 여부를 나타내는 불리언 값
n이 true였으면 window.open(o) 를 호출하여 새 창에서 주소를 엽니다.
n 이 false였으면 window.location.href = o를 호출하여 현재 창의 주소를 변경
2. form_Search() 함수:
해당 함수는 HTML 폼에서 호출되며 핸드폰 번호와 관련된 입력 값을 검증하고 서버에 전송
입력된 핸드폰 번호를 서버로 보내기 전에 유효성을 검사
서버와의 통신은 AJAX를 사용하며 성공 또는 실패에 따라 다른 동작을 수행
3. finish() 함수:
해당 함수는 다른 HTML 폼에서 호출되며 개인 정보를 입력하고 서버에 제출
입력된 이름과 생년월일을 서버로 보내기 전에 유효성을 검사
서버와의 통신은 AJAX를 사용하며, 성공적으로 처리된 경우 다른 페이지로 이동
4. browse() 함수:
해당 함수는 서버에 대한 AJAX 요청을 보내는 함수
정확한 동작이 코드 내에서 설명되어 있지 않음
5.click_download() 함수:
해당 함수는 다른 서버에 대한 AJAX 요청을 보내는 함수
정확한 동작이 코드 내에서 설명되어 있지 않음
6.localStorage.phone:
해당 코드는 로컬 스토리지를 사용하여 핸드폰 번호를 저장
이미 저장된 번호가 없는 경우 010을 기본값으로 설정
이며 여기서 15e3 즉 15,000 밀리 초 또는 15초 동안 서버 응답이 도착하지 않으면 해당 AJAX 요청은 타임 아웃으로 처리하는 방식을 사용하고 있습니다.

개인정보 전송 사이트

HTTP Debugger Pro 로 생년월일 및 이름 수집HTTP Debugger Pro 개인정보 수집 Raw 값
HTTP Debugger Pro 로 생년월일 및 이름 수집

http://hwanssa(.)xyz/XmsWeb/Submit

해당 부분을 HTTP Debugger Pro를 통해서 Raw 값은 다음과 같습니다.

POST /XmsWeb(/)Submit HTTP/1.1
Host: hwanssa(.)xyz
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3
Prefer: safe
Content-Type: application/x-www-form(-)urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Origin: http://hwanssa(.)xyz
DNT: 1
Connection: keep-alive
Referer: http://hwanssa(.)xyz/info.html
Accept-Encoding: gzip, deflate
Content-Length: 74
phoneNo=01012346578&name=%EB%A9%B8%EA%B3%B5%ED%86%B5%EC%9D%BC&birth=530723

여기서 이름, 생년월일을 입력하면 다음 과정인 악성코드 다운로드 사이트로 이동하고 다음과 같은 내용을 확인할 수가 있습니다.

 

http://hwanssa(.)xyz/download

를 통해서 해당 사이트에 접속되며 그러며 다음과 같은 화면 내용을 볼 수가 있습니다.
The건강보험
어플을 다운로드후에 설치를 누르시면 권한혀용이 뜹니다. 허용을 해주시면 어플설치할수 있습니다.
Play프로젝트에 의해 차단됨 이라는글이 나올시에는 밑에무시하고 설치를 누르시면 됩니다.
설치방법 다운로드에->설치->어플을찾아서 더블클릭 (또는 클릭) 하여 설치가 가능합니다.
*금년도 검진대상이 확인된 분은 신분증을 지참하고 검진기관에 방문하셔도 검진이 가능합니다.
검진표를 분실하거나 수령치 못한경우에는 1577-1000번이나 가까운 지사에 신청하시면 검진대상자 확인서를 발급해 드립니다.

악성코드 APK 및 설치 유도
악성코드 APK 및 설치 유도

여기서 해당 웹소스를 보면 다음과 같이 돼 있는 것을 확인할 수가 있습니다.

<div class="download">
			<a href="download" id="complate" download="" 
            onClick="click_download();">다운로드 하기</a>
		</div>
		<script type="text/javascript" src="static/js/jquery(.)js"></script>
		<script type="text/javascript" src="static/js/common.min.js"></script>
		<script type="text/javascript">
			$(function () {
				$('#complate').attr('download', localStorage.phone (+) '.apk');
			});
		</script>
</body>

코드 설명

JavaScript를 사용하여 다운로드 링크의 동작을 조작하는 부분
1.div class="download">:<div> 요소는 download 클래스를 가진 스타일링을 위한 컨테이너 역할
2.<a href="download" id="complate" download="" onClick="click_download();">다운로드 하기</a>:해당 부분은 다운로드 하기라는 텍스트를 가진 하이퍼링크(`<a>`) 요소
href="download":해당 링크의 대상 주소 을 download 로 지정하고 있음
여기서 download 는 현재 페이지에서의 상대 경로
id="complate":해당 요소에 complate 라는 고유한 ID를 부여하고 있음 해당 ID는 JavaScript 코드에서 이 요소를 식별하는 데 사용
download="":HTML5에서 도입된 download 속성은 다운로드할 파일의 이름을 지정
현재는 비어 있지만 JavaScript 코드에서 동적으로 설정
onClick="click_download();":해당 링크를 클릭했을 때 click_download() 함수가 호출되도록 설정되어 있음
해당 함수는 아마도 다운로드 동작과 관련된 로직을 실행하는 역할
3. <script> 요소들:JavaScript 코드를 포함하고 있음
첫 번째 <script> 요소는 jQuery 라이브러리를 로드
두 번째 <script> 요소는 static/js/common.min(.)js 파일을 로드
사용자 정의 JavaScript 코드로 아래의 내용을 수행합니다.
javascript
     $(function () {
         $('#complate').attr('download', localStorage.phone (+) '.apk');
     });
해당 코드는 페이지가 로드될 때 실행되며 complate ID를 가진 링크의 download 속성을 설정
localStorage.phone 값과 .apk 를 합쳐서 다운로드할 파일의 이름을 동적으로 생성하고 설정
해당 악성코드 해쉬값은 다음과 같습니다.
파일명:010123456578(2023.09.18).apk
사이즈:3.36 MB
CRC32:1c26a6bd
MD5:5a2d2b7ead89e59c383fba71d1d6b3fe
SHA-1:16ae7384fea10a725238ee1907d1e2c1b3687aec
SHA-256:018d53e881322ae012dc494f47f508f63f8f61c7307043ee990ff4f661f4fc6d
바이러스토탈에서 탐지 하는 보안 업체들은 다음과 같습니다.
AhnLab-V3:Trojan/Android.SMSstealer.1201981
Avast-Mobile:Android:Evo-gen [Trj]
DrWeb:Android.SmsSpy.922.origin
ESET-NOD32:A Variant Of Android/Spy.Agent.CPA
Fortinet:Android/Agent.CPA!tr
Kaspersky:HEUR:Trojan-Spy.AndroidOS.SmsThief.to
Microsoft:Trojan:AndroidOS/Smsthief.ER
ZoneAlarm by Check Point:HEUR:Trojan-Spy.AndroidOS.SmsThief.to
2023-09-19 06:28:20 UTC  이니까 다른 보안 업체들은 추가될 수가 있습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band