국내외 많은 기업과 개인 사용자가 Microsoft 계정을 이용하여 Outlook, Office, OneDrive, Windows를 비롯한 Microsoft의 주요 서비스를 이용하고 있다. 사용자는 통합 로그인을 이용하여 계정과 연결된 모든 Microsoft 서비스에 편리하게 접속할 수 있다. 공격자 입장에서는 어떨까? 단 한 개의 계정을 이용하여 취할 수 있는 정보가 많기 때문에 더없이 좋은 공격 타깃이다. 특히 기업 내에서 민감 정보를 취급하는 사용자인 경우에는 Microsoft 계정으로 얻을 수 있는 정보가 이른바 ‘영양가’가 넘칠 것이다.
이와 같은 이유로 로그인 계정(Credentials) 유출 목적의 피싱 이메일 중 상당수가 Microsoft 계정을 노리고 있다. 매주 발행하고 있는 ‘ASEC 주간 피싱 이메일 위협 트렌드’에서도 그 사례를 확인할 수 있다. 공격자는 Microsoft 계정에 로그인하도록 피싱 페이지를 제작하고, 이를 HTML이나 HTM과 같은 스크립트 파일로 만들어 이메일에 첨부하거나 이메일 본문에 포함된 링크에 연결한다. 이렇게 제작된 피싱 페이지를 사용자는 잘 구분할 수 있을까? 지금부터 설명하는 화면은 최근 1~2주 내 유포된 Microsoft 계정 탈취 목적의 가짜 로그인 피싱 페이지이다.
아래는 정상적인 Microsoft 계정 로그인 페이지이다. 배경 색상부터 폰트, 버튼 색깔, 크기 등 화면 구성만 보면 매우 비슷해서 피싱과 정상 페이지를 구별하기 어렵다. 과거 피싱 유형은 로고 해상도가 낮거나 위치가 어긋나있는 등 화면 구성이 다소 부자연스러운 부분이 있어 화면만으로도 이를 구분하기 쉬웠다. 이와 비교하면 이번에 확인된 유형은 매우 정교하게 만들었고 그만큼 공격 성공률 높였다.
Microsoft 가짜 로그인 페이지 중에는 화면 구성이 유사한 것에 더하여 reCAPTCHA를 적용한 사례도 있었다. 인증 단계를 추가하면서 사용자가 접속하는 페이지를 더 신뢰하도록 하였다. 아래는 미국의 모 카운티 도메인 사용자를 대상으로 한 피싱 페이지이다. 전문가가 아닌 일반 사용자가 화면 레이아웃만 보고 피싱 여부를 판단하기는 쉽지 않다.
이처럼 정교하게 만든 피싱 페이지의 스크립트 코드는 화면만큼이나 정성을 들여 제작한 것으로 보인다. CryptoJS를 이용하여 AES 암호화된 문자열을 복호화하고 document.write(decrypted.toString(CryptoJS.enc.Utf8)); 단계에서 피싱 페이지 스크립트 코드를 로드하였다. 많은 피싱 페이지 스크립트가 atob, Base64, Percent-encoding 등의 방식을 이용하여 문자열을 인코딩하는 것보다 복잡하다. 암호화를 이용하여 자동화된 스크립트 디코딩 방식과 탐지 로직을 우회하려 한 것으로 보인다.
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script>
var url_string = "...."; // comment: concealed
var o365File = "https://toolzcontructed.com/o3651.php";
let ciphertextWA = CryptoJS.enc.Hex.parse("e4ad44edb819990ffdbcb8beaa56db2bc476d724f10....."); // comment: concealed
let keyWA = CryptoJS.enc.Utf8.parse("32045938420609488026218382801049");
let ivWA = CryptoJS.enc.Utf8.parse("3105230020482131");
let ciphertextCP = { ciphertext: ciphertextWA };
let decrypted = CryptoJS.AES.decrypt(ciphertextCP, keyWA, { iv: ivWA });
document.write(decrypted.toString(CryptoJS.enc.Utf8));
</script>
로드된 피싱 페이지 스크립트 코드는 Microsoft 계정 로그인 화면을 거의 그대로 구현하였다. 아래는 배경화면과 로고 벡터 이미지를 참조하여 레이아웃을 표현하는 코드의 일부이다. 실제 Microsoft 계정 로그인 페이지는 이렇게 레이아웃을 구성하지 않는다. 모조하기 위한 필수적인 코드이지만, 스크립트 코드를 보지 않는 대부분의 사용자는 이를 인지할 수 없다.
<div id="lightboxBackgroundContainer">
<div class="background-image-holder" role="presentation">
<div class="background-image ext-background-image"
style="background-image: url("https://aadcdn.msftauth.net/shared/1.0/content/images/backgrounds/2_bc3d32a696895f78c19df6c717586a5d.svg");">
</div>
</div>
</div>
<div class="outer" id="bgImgCenter">
<div class="template-section main-section">
<div class="middle ext-middle">
<div class="full-height">
<div class="flex-column">
<div class="win-scroll">
<div id="lightbox" class="sign-in-box ext-sign-in-box fade-in-lightbox">
<div><img class="logo" role="img"
pngsrc="https://aadcdn.msftauth.net/shared/1.0/content/images/microsoft_logo_ed9c9eb0dce17d752bedea6b5acda6d9.png"
svgsrc=""
src="https://aadcdn.msftauth.net/shared/1.0/content/images/microsoft_logo_ee5c8d9fb6248c938fd0dc19370e90bd.svg"
alt="Microsoft"></div>
마우스 우클릭 이벤트와 Ctrl+S 키보드 입력 이벤트 등 각종 이벤트를 모두 비활성화하는 코드가 있다. 이를 통해 웹 화면에서 ‘페이지 소스 보기’ 또는 웹 브라우저의 ‘개발자 도구’ 등 스크립트 코드를 볼 수 있는 각종 방법이 모두 실행되지 않는다. 입력이 가능한 부분은 Microsoft 계정 패스워드 입력 부분 밖에 없다. 패스워드는 길이 검증이 있어 유효한 패스워드 값만을 취하려고 하였다. 패스워드를 입력받아 공격자 서버에 전송한 이후에는 정상 Microsoft Office365 페이지로 화면을 리다이렉트 한다. 공격자는 피싱 페이지 스크립트를 노출하지 않으면서 적절히 값을 필터링하고, 또 탈취에 성공한 이후에도 유출 사실을 사용자가 인지하지 못하도록 하기 위해 상당한 공을 들인 것으로 보인다.
<script>
// prevent ctrl + s
window.addEventListener('keydown', async (e) => {
if (e.ctrlKey && (e.which == 83)) {
e.preventDefault();
return false;
}
});
window.addEventListener('contextmenu', event => event.preventDefault());
document.onkeydown = function (e) {
if (event.keyCode == 123) {
return false;
}
위와 같은 Microsoft 가짜 로그인 페이지는 이메일 첨부파일로 유포되었다. 이메일은 특정 국가나 기업이 아닌 국내외 상관없이 글로벌하게 발송되었다. 아래는 이메일 화면과 본문 내용이다. 영문으로 발송되었고, 현재까지 한국어는 확인되지 않았다. 본문 내용은 거의 없고 첨부파일만 있었다. 이 부분은 사용자가 피싱 메일로 의심할 수 있는 부분이다.
Microsoft 계정 탈취 목적의 피싱 페이지는 보안 수칙을 준수하여 공격을 예방하고 피해를 최소화할 수 있다.
- 발신자와 내용, 첨부파일이 의심스러운 이메일은 피싱일 가능성이 높으니 클릭 및 실행하지 않는다.
- Microsoft 계정에 로그인할 때는 현재 접속 주소 도메인이 정상적인 Microsoft 서비스 주소이고 HTTPS 연결이 맞는지 확인한다.
- Microsoft 계정에 2단계 인증을 사용한다. 계정 정보가 유출되어도 본인 여부를 검증할 수 있다.
현재 안랩에서는 위와 같은 악성코드를 V3에서는 아래와 같이 진단하고 차단하고 있다.
[파일 진단]
- Phishing/HTML.FakeMS.SC184878 (2022.11.30.00)
- Phishing/HTML.FakeMS.SC184966 (2022.12.06.00)
- Phishing/HTML.FakeMS.SC184967 (2022.12.06.00)
[IOC 정보]
- 4ba7fe8ad00623bf28b943272aa07de9
- fbe4c854b285693895d30afa72a9c004
연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.

Categories:악성코드 정보
[…] Microsoft 계정 탈취 피싱 페이지는 진짜와 얼마나 비슷할까? […]