꿈을꾸는 파랑새

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

왼쪽 국민건강보험 피싱 사이트 오른쪽 공식 국김건강보험 사이트
왼쪽 국민건강보험 피싱 사이트 오른쪽 공식 국김건강보험 사이트

유포 이메일 내용

[Web발신]보험 국민건강 통보문 전달완료부탁합니다
[Web발신]건강검사보험 통보문 전달완료
[Web발신]보험 국민건강 통보문 전달완료부탁합니다
[Web발신]건강검사보험 통보문 전달완료

유포 사이트

yhasns(.)lol

 

입니다.
저는 yhasns 쪽을 따라가겠습니다.
일단 진짜와 다른 점은 역시 https 가 아니라는 점입니다.
기본적인 피싱 방법은 간단합니다. 먼저 해당 사이트에 접속하면 묻지도 않고 그냥 전화번호를 입력을 요구합니다.
그리고 조회를 입력하면 다음과 같이 이름, 생년월일을 입력하라고 합니다. 해당 방법은 몇 년이 지나도 똑같은 느낌이 드네요.
여기서 생년월일을 잘못 입력하면 다음과 같은 화면을 볼 수가 있는데 보면 한국어가 이상한 것을 확인할 수가 있습니다.
생년월일을 정화하게 입력하세요.
이것을 확인하기 위해서 common(.)js를 열어보면 됩니다.
그러면 다음과 같은 자바스크립트가 있는 것을 확인할 수가 있습니다.

common.min.js 내부 모습
common.min.js 내부 모습

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:"/Xm(s)Web/ConfirmPhoneNo",type:"POST",dataType:"json"
,timeout:15e3,data:{phoneNo:e,dom(a)in:n},success:function(o){localSto(r)age
.ph(o)ne=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:"/X(m)sWeb/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:"/XmsWe(b)/Confirm",type:"POST",dataType:"json"
,timeout:15e3,data:{domain:window(.)location.hostname},success:function()
{},error(:)function(){}})}function click_download()
{$.ajax({type:"POST",url:"/XmsW(e)b/Download"
,data:{domain:window.location(.)hostname},success:funct(i)on(){},
error:f(u0nction(){}})}localStorage(.)phone||(localStorage.phone="010");

설명

해당 코드는 웹 애플리케이션을 위한 JavaScript 코드
1.function gourl(o, n):해당 함수는 두 개의 매개변수를 받고 o는 URL이고 n은 부울 값 만약 n 이 true이면 URL o 를 새 창에서 열며 그렇지 않으면 현재 창의 위치를 URL 으로 설정 해당 함수는 탐색에 사용
2.function form_Search(): 해당 함수는 양식이 제출될 때 트리거 특정 조건을 충족하는지 확인하고 서버에 AJAX 요청을 보내는 역할 다음은 이 함수의 구성 요소
휴대폰 번호 입력 필드가 특정 패턴 (정규식)과 일치하는지 확인
모든 휴대폰 번호 입력 필드가 패턴과 일치하면 수집한 데이터와 함께 /XmsW(e)b/ConfirmPhoneNo에 AJAX 요청을 보내고 성공하면 로컬 스토리지에 값을 설정하고 /info.html 로 이동 오류 발생 시 네트워크 문제에 대한 경고를 표시
휴대폰 번호 입력 필드가 패턴과 일치하지 않으면 경고를 표시하고 문제가 있는 입력 필드에 포커스를 맞춤
3.function finish():해당 함수는 어떤 양식 제출을 완료하는 데 사용 이름과 생년월일 입력이 특정 기준을 충족하는지 확인 만약 조건이 충족된다면 수집한 데이터와 함께 /Xm(s)Web/Submit에 AJAX 요청을 보냅니다. 성공 시 /finish(.)html 로 이동하고 오류 발생 시 네트워크 문제에 대한 경고를 표시
4. function browse():해당 함수는 특정 데이터 없이 /Xm(s)Web/Confirm 에 AJAX 요청을 보냅니다. 페이지가 로드될 때 초기화 또는 확인 프로세스의 일부로 사용될 것으로 보입니다.
5.function click_download():해당 함수는 특정 데이터 없이 /Xms(W)eb/Download 에 AJAX 요청을 보낸 웹 페이지에서 다운로드 버튼이나 링크를 클릭할 때 사용될 수 있습니다.
전체적으로 이 코드는 사용자 데이터를 수집하고 처리하기 위해 AJAX 요청을 통해 작동하며 입력 유효성을 확인하고 특정 조건에 따라 탐색을 처리 또한 네트워크 관련 문제에 대한 오류 처리도 포함되어 있습니다.
주요 AJAX 요청 부분은 form_Search(), finish(), browse(), 및 click_download() 함수 내에서 이루어짐
AJAX 요청 부분 설명
1. form_Search() 함수
$.ajax({
    url: "/XmsW(e)b/ConfirmPhoneNo", // 요청할 URL
    type: "P(O)ST", // HTTP 요청 메서드 (POST)
    dataTy(p)e: "json", // 응답 데이터 형식 (JSON)
    timeo(u)t: 15e3, // 요청 제한 시간 (15,000 밀리초, 즉 15초)
    data: {
        ph(o)neNo: e, // 데이터로 전송할 휴대폰 번호
        domai(n): n // 데이터로 전송할 도메인 정보
    },
    success: fu(n)ction(o) {
        // 성공 시 실행할 코드
        localStorage(.)phone = e;
        gourl("/info(.)html"); // 페이지 이동 함수 호출
    },
    error: funct(i)on() {
        // 오류 발생 시 실행할 코드
        alert("네트워크가 비정상입니다. 네트워크를 확인하십시오.");
    }
});
해당 코드는 /Xms(W)eb/Confi(r)mPhoneNo" URL로 POST 요청을 보내고, 성공 시 success 콜백 함수가 실행 응답 데이터는 JSON 형식으로 예상 오류가 발생하면 error 콜백 함수가 실행되며 네트워크 문제에 대한 경고가 표시함
2.finish() 함수와 click_download() 함수:
해당 두 함수에서도 AJAX 요청이 비슷한 방식으로 이루어짐 $.ajax() 함수를 사용하여 URL, HTTP 요청 메서드, 데이터 형식, 타임아웃, 데이터 등을 설정하고, 성공 또는 오류에 따라 적절한 콜백 함수를 실행
3. browse() 함수:
해당 함수에서도 AJAX 요청이 이루어지며 해당 부분은 페이지 로딩 시 서버와의 연결을 확인하는 역할을 할 수 있습니다.

국민건강보험 피싱 사이트 이름 생년월일 입력
국민건강보험 피싱 사이트 이름 생년월일 입력

그럼 다시 돌아가서 피싱 사이트 보면 먼저 휴대폰 전화번호 입력을 해 달고 할 것입니다. 아무거나 입력을 해주면 다음과 같이 이름, 생년월일을 묻는 사이트로 이동합니다.

http://yhsgwac(.)lat/info.html

그리고 여기서 이름과 생년월일을 입력을 해주면 다음에는 안드로이드 스마트폰 악성코드 다운로드 사이트로 이동합니다. 그와 동시에 개인정보도 수집합니다.

안드로이드 스마트폰 악성코드 다운로드 사이트
안드로이드 스마트폰 악성코드 다운로드 사이트

http://yhsgwac(.)lat/XmsWeb/Submit

이며 HTTP Debugger Pro로 보면 다음과 같이 볼 수가 있을 것입니다.
Raw 값

HTTP Debugger Pro 본 개인정보 전송
HTTP Debugger Pro 본 개인정보 전송

POST /Xms(W)eb/Submit HTTP/1.1
Host: yhsgwac(.)lat
User-Agent: Mozilla/5.0 (Linux; Android 13; SAMSUNG SM-S918N) AppleWebKit/537.36
(KHTML, like Gecko) SamsungBrowser/22.0.3.1 Chrome/116.0.0.0 Mobile Safari/537.36
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:X(M)LHttpRequest
Origin:http://yhsgwac(.)lat
DNT:1
Connection:keep-alive
Referer:http://yhsgwac(.)lat/info(.)html
Accept-Encoding: gzip, deflate
Content-Length: 74
phoneNo=01020231111&name=%EB%A9%B8%EA%B3%B5%ED%86%B5%EC%9D%BC&birth=570723

입니다.

http://yhsgwac(.)lat/finish.html

 

안드로이드 스마트폰 악성코드 다운로드 관련 웹 소스

<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>

해당 웹 소스 설명

javaScript 및 jQuery를 사용하여 작업을 수행
1. <script> 태그:
코드는 <script> 태그를 사용하여 JavaScript 코드를 HTML 페이지에 포함
<script> 태그를 통해 외부 스크립트 파일인 jquery.js와 common.min.js를 페이지에 로드
2.$(function ():
$(function () 해당 부분은 jQuery의 문서가 완전히 로드되고 나서 실행될 코드 블록을 정의 해당 부분은 일반적으로 페이지 로딩이 완료되면 실행해야 하는 작업을 처리하는 데 사용
3.$('#complate').attr('download', localStorage.phone (+) '(.)apk');:
해당 줄은 jQuery를 사용하여 HTML 요소를 선택하고 그 속성을 변경
$('#complate'):$ 기호는 jQuery 함수를 호출하는 것을 나타내며 #complate 는 HTML 요소의 ID가 complate 인 요소를 선택
.attr('download', localStorage.phone (+) '(.)apk'): 선택한 요소의 download 속성을 설정 해당 코드는 localStorage(.)phone 에 저장된 값과 (.)apk 문자열을 결합하여 다운로드할 파일의 이름을 동적으로 생성 해당 파일 이름은 사용자가 해당 요소를 클릭하여 다운로드할 때 사용
최종적 웹 사이트 내용
The건강보험
어플을 다운로드후에 설치를 누르시면 권한혀용이 뜹니다. 허용을 해주시면 어플설치할수 있습니다.
Play프로젝트에 의해 차단됨 이라는글이 나올시에는 밑에무시하고 설치를 누르시면 됩니다.
설치방법 다운로드에->설치->어플을찾아서 더블클릭 (또는 클릭) 하여 설치가 가능합니다.
금년도 검진대상이 확인된 분은 신분증을 지참하고 검진기관에 방문하셔도 검진이 가능합니다.
검진표를 분실하거나 수령치 못한경우에는 1577-1000번이나 가까운 지사에 신청하시면 검진대상자 확인서를 발급해 드립니다.

해당 악성코드 해쉬값은 다음과 같습니다.
파일명:010입력한 전화번호.apk
사이즈:3.36 MB
CRC32:f1c80007
MD5:f49f3b7e471beddeb215d0d6ab4f9bba
SHA-1:dbfe08ec5028b4255a87c109d89661b6ce3c688e
SHA-256:7b1b47c83ff27c005447627c2ccc1b83069019fc029d81d88f71b8b8d22c5540
바이러스토탈(VirusTotal)에서  2023-09-02 21:08:59 UTC 으로 탐지하는 보안 업체들은 다음과 같습니다.
AhnLab-V3:Trojan/Android.SMSstealer.1201981
Avast-Mobile:Android:Evo-gen [Trj]
ESET-NOD32:A Variant Of Android/Spy.Agent.CPA
Fortinet:Android/Agent.CPA!tr
K7GW:Spyware ( 005a1d2f1 )
Kaspersky:HEUR:Trojan-Spy.AndroidOS.SmsThief.to
McAfee:Artemis!8A426C4BE465
McAfee-GW-Edition:Artemis!Trojan
Symantec Mobile Insight:AdLibrary:Generisk
Tencent:A.privacy.InfoStealer
Trustlook:Android.PUA.General
ZoneAlarm by Check Point:HEUR:Trojan-Spy.AndroidOS.SmsThief.to
언제나 하는 말이지만 일단 기본적으로 신뢰할 수가 있는 보안 업체의 백신앱을 설치를 해서 사용을 하면 해당 악성코드 탐지 및 제거를 통해서 안전하게 사용을 할 수가 있으면 구글 플레이 스토어 에서도 악성코드도 있습니다. 즉 AV-TEST에서 평가가 좋은 보안 업체에서 제공을 해주는 백신 앱을 사용을 하시는 것을 추천합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band