최근 악성코드의 주요 공격 방식 중 하나는 RAT(원격 액세스 트로이 목마, Remote Access Trojan) 및 FakeUpdates(가짜 업데이트 멀웨어)를 이용한 감염입니다. 이러한 악성코드는 기업 및 개인 사용자의 보안을 위협하며, 추가적인 멀웨어 설치 및 정보 유출을 유발할 수 있다.
이 글에서는 RAT 및 FakeUpdates를 탐지할 수 있는 백신을 개발하고, 이를 테스트하는 방법을 설명한다.
RAT은 공격자가 원격으로 피해자의 컴퓨터를 제어할 수 있도록 설계된 악성코드이며, 주요 기능은 다음과 같다.
📌 RAT 악성코드 예제: AsyncRAT, njRAT, RemcosRAT 등
FakeUpdates는 웹사이트에 악성 스크립트를 삽입하여 가짜 소프트웨어 업데이트를 유도하는 다운로더형 멀웨어입니다. 사용자가 속아 업데이트를 실행하면 추가 악성코드가 설치됨.
📌 실제 공격 사례: SocGholish를 이용한 Conti 랜섬웨어 배포 사례 (2022년)
FakeUpdates 멀웨어는 사용자를 속이는 가짜 업데이트 메시지를 표시하고 악성 파일을 다운로드합니다. 이를 시뮬레이션하기 위해 다음과 같은 예제 코드를 작성.
<!DOCTYPE html>
<html>
<head>
<title>Fake Browser Update</title>
<script>
function fakeUpdate() {
alert("Your browser is out of date! Please update now.");
window.location.href = "http://127.0.0.1:5000/malware.exe";
}
setTimeout(fakeUpdate, 2000);
</script>
</head>
<body>
<h1>Welcome to Safe Browsing</h1>
<p>Your browser is up-to-date.</p>
</body>
</html>
📌 동작 방식
✅ 2초 후 가짜 업데이트 경고 표시
✅ 사용자가 클릭하면 malware.exe 다운로드
✅ 백신이 탐지해야 하는 악성 다운로드 URL 생성
실제 악성코드를 다운로드하지 않고 백신이 탐지할 수 있도록 가짜 업데이트 서버를 제작.
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/')
def fake_update_page():
return '''
<html>
<head>
<title>Fake Browser Update</title>
<script>
function fakeUpdate() {
alert("Your browser is out of date! Please update now.");
window.location.href = "/malware.exe";
}
setTimeout(fakeUpdate, 2000);
</script>
</head>
<body>
<h1>Welcome to Safe Browsing</h1>
<p>Your browser is up-to-date.</p>
</body>
</html>
'''
@app.route('/malware.exe')
def fake_malware():
return send_file("malware.exe", as_attachment=True)
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5000)
📌 테스트 방법
1. python fakeupdates_server.py 실행
2. 브라우저에서 http://127.0.0.1:5000/ 접속
3. 가짜 업데이트 페이지가 나타나고 malware.exe 다운로드 시도
4. 백신이 이를 탐지하는지 확인
백신이 FakeUpdates를 탐지할 수 있도록 YARA 룰을 작성합니다.
rule FakeUpdates_Detection {
meta:
description = "Detects FakeUpdates (SocGholish)"
author = "SecurityResearcher"
date = "2025-03-04"
strings:
$update_prompt1 = "Your browser is out of date"
$update_prompt2 = "Please update your Flash Player"
$js_obfuscation = /var\s+\w+\s*=\s*function\s*\(\)\s*{.*};/
$wmi_call = /GetObject\("winmgmts:/
condition:
any of them
}
📌 탐지 방식
✅ 가짜 업데이트 메시지 "Your browser is out of date" 포함 여부
✅ 난독화된 JavaScript 감지
✅ Windows WMI 호출 여부 확인
이제 백신을 크롬 익스텐션으로 발전시켜 웹 트래픽에서 악성코드를 실시간 탐지할 계획.
1️⃣ 웹사이트에서 가짜 업데이트 탐지 (chrome.webRequest)
2️⃣ 악성 다운로드 파일 검사 (chrome.downloads.onDeterminingFilename)
3️⃣ 서버와 연동하여 탐지 로그 수집
4️⃣ 사용자에게 경고 메시지 표시
✔ RAT 및 FakeUpdates 탐지 백신 개발
✔ Python Flask 서버에서 가짜 업데이트 테스트 가능
✔ YARA 룰 적용하여 탐지 가능
✔ 이제 크롬 익스텐션으로 발전하여 웹 탐지 기능 추가 예정