렘코스 온 더 와이어: 네트워크 아티팩트 및 C2 명령 구조 분석하기

개요

Remcos는 2016년 7월에 독일 회사 Breaking Security에서 처음 소개한 원격 액세스 트로이 목마(RAT)입니다. 처음에는 Windows 시스템의 원격 관리를 위한 합법적인 도구로 판매되었지만, 이후 사이버 범죄자들이 악의적인 목적으로 널리 채택하고 있습니다. 이 멀웨어는 일반적으로 매크로가 포함된 Microsoft Office 문서나 합법적인 콘텐츠로 가장한 ZIP 파일과 같은 악성 첨부 파일이 포함된 피싱 이메일을 통해 유포됩니다. 이러한 첨부 파일을 실행하면 피해자의 시스템에 렘코스가 배포됩니다. 경우에 따라 공격자는 알려진 취약점을 악용하여 감염 과정을 용이하게 합니다.

렘코스는 공격자에게 키 로깅, 화면 캡처, 오디오 및 비디오 녹화, 원격 명령 실행 등 광범위한 기능을 제공합니다. 또한 시스템 정보를 수집하고, 자격 증명을 탈취하고, 추가 악성 페이로드를 다운로드할 수도 있습니다. 이 멀웨어의 모듈식 아키텍처는 새로운 기능을 추가할 수 있어 다양한 악성 캠페인에 적응할 수 있습니다.

최근 Remcos 샘플(버전 6.1.1 프로)이 악성 7Z 아카이브를 첨부파일로 포함하는 스팸 이메일을 통해 확산되는 것이 관찰되었습니다. 이 아카이브에는 탐지를 피하기 위해 심하게 난독화된 배치 파일이 포함되어 있습니다. 배치 파일 안에는 두 개의 암호화 및 압축된 데이터 스트림(특히, AES 암호화 및 GZIP 압축)이 있으며 실행 중에 복호화 및 압축 해제됩니다. 이 과정을 통해 결국 피해자의 시스템에 Remcos 페이로드가 배포됩니다.

기술 세부 정보

악성 배치 파일은 심하게 난독화되어 있으며 Base64로 인코딩된 PowerShell 코드가 내장되어 있습니다. 공격자는 탐지를 피하기 위해 스크립트 전체에 정크 코드를 삽입했습니다. 예를 들어, 첫 번째 줄에서 문자열 “ywg” 를 바꾸면 숨겨진 기능이 있음을 나타내는 에코 명령이 표시됩니다.

난독화된 배치 파일

그림 1 – 난독화된 배치 파일

배치 파일이 실행되면 임베드된 PowerShell 스크립트가 실행되어 사용자 프로필 디렉터리에 “dwm.bat” 파일이 있는지 확인합니다. 파일이 존재하면 해당 파일의 내용을 한 줄씩 읽고 ::: 마커가 포함된 줄을 검색한 다음 그 뒤에 오는 내용을 추출합니다. 이 콘텐츠는 Base64로 인코딩된 PowerShell 코드이며, 그 다음 디코딩되어 실행됩니다. “dwn.bat” 파일이 없는 경우 스크립트는 단순히 종료됩니다.

임베디드 파워쉘 스크립트

그림 2 – 임베디드 PowerShell 스크립트

AMSI 및 ETW 우회

디코딩된 PowerShell 스크립트는 Invoke-SysRoutine이라는 함수를 정의하는데, 이 함수는 안티멀웨어 검사 인터페이스(AMSI)와 Windows용 이벤트 추적(ETW)을 모두 우회하는 기술을 구현합니다. 이 함수는 런타임에 시스템 API 주소를 동적으로 확인하고 .NET 상호 운용성 및 기본 Windows API 호출을 사용하여 대상 함수의 메모리를 수정하여 보안 원격 분석을 비활성화하고 탐지를 회피함으로써 이를 달성합니다.

이 스크립트는 런타임에 이름을 디코딩하여 GetProcAddress 및 GetModuleHandle과 같은 중요한 시스템 함수를 동적으로 해결하므로 정적 분석이 어렵습니다. 이 스크립트는 관리되지 않는 코드를 호출하기 위해 사용자 지정 델리게이트를 생성하고 VirtualProtect를 사용하여 메모리 보호를 수정하여 AMSI의 AmsiInitialize 함수를 패치합니다.

AMSI 바이패스

그림 3 – AMSI 바이패스

또한 메모리에서 여러 AMSI 공급자를 검사하고 패치를 적용하여 완전한 비활성화를 보장합니다. DisableSvc 플래그를 사용하면 ntdll.dll의 EtwEventWrite 함수도 대상으로 지정하여 보안 이벤트 로깅을 효과적으로 억제합니다. 패치 후 메모리 보호 기능은 시스템 안정성을 유지하기 위해 복원됩니다.’

  ETW 패치 적용

그림 4 ETW 패치 적용

복호화 및 압축 해제

AMSI 및 ETW를 성공적으로 우회한 후 배치 파일에 포함된 PowerShell 스크립트는 마커 ::를 찾아 그 뒤에 오는 콘텐츠를 추출한 다음 백슬래시(\)를 구분 기호로 사용하여 이 데이터를 분할합니다. 그 결과 base64로 인코딩된 값은 추가 처리를 위해 배열에 저장됩니다.

암호화된 요소를 읽는 PowerShell 스크립트

그림 5: 암호화된 요소를 읽는 PowerShell 스크립트

그런 다음 추출된 배열 요소는 CBC(암호 블록 체인) 모드에서 AES를 사용하는 복호화 함수로 전달됩니다. 이 함수는 다음 코드 스니펫에 설명된 대로 하드코딩된 키와 초기화 벡터(IV)를 사용하여 콘텐츠를 복호화합니다. 해독된 출력은 이후 GZIP 압축 해제를 처리하는 다른 함수로 전달됩니다.

  AES 암호 해독

그림 6 – AES 복호화

두 배열 요소의 압축이 풀리면 스크립트는 두 개의 실행 파일을 추출합니다. 첫 번째 실행 파일에는 활성 목적이 없는 빈 main() 함수가 포함되어 있고, 두 번째 실행 파일은 Remcos 페이로드를 로드하는 역할을 담당합니다.

  CyberChef를 사용한 AES 복호화 및 GZIP 압축 해제

그림 7 – CyberChef를 사용한 AES 복호화 및 GZIP 압축 해제

그런 다음 스크립트는 추출된 실행 파일을 반사 로딩을 사용하는 함수에 전달하여 디스크에 바이너리를 저장하지 않고 PowerShell 프로세스 내의 메모리에서 직접 악성 바이너리를 실행합니다. 이 기법을 사용하면 페이로드를 메모리 내에서 실행할 수 있으므로 탐지 및 분석이 더욱 어려워집니다.

반사 로딩

그림 8 – 반사 로딩

첫 번째 배열 요소에서 추출된 실행 파일에는 빈 메인 함수가 포함되어 있어 공격자가 탐지를 피하기 위한 미끼 또는 회피 전술로 사용할 수 있음을 나타냅니다.

렘코스로더

두 번째 배열 요소에서 추출된 실행 파일은 피해자 시스템에 렘코스의 페이로드를 로드하는 로더 역할을 합니다. 실행 시 로더는 “ntdll.dll” 을 로드하고 “EtwEventWrite” 함수의 주소를 검색한 후 이 함수의 메모리 보호 기능을 PAGE_EXECUTE_READWRITE로 변경합니다.

32비트 시스템에서는 함수가 즉시 반환되도록 하는 명령어(0xC2 0x14)를 추가하여 ETW 로깅을 효과적으로 비활성화합니다. 64비트 시스템에서는 스크립트가 EtwEventWrite 함수의 시작 부분을 0xC3 명령어로 대체하여 함수가 아무 작업 없이 즉시 반환되도록 합니다. 이 변경으로 이벤트 로깅이 비활성화됩니다. 스크립트가 수정되면 원래의 메모리 보호 기능을 복원하여 추가 변경을 방지함으로써 EtwEventWrite를 효과적으로 작동하지 않도록 하고 멀웨어가 보안 툴의 탐지를 피할 수 있도록 합니다.

ETWEventWrite 패치 적용

그림 9 – ETWEventWrite 패치 적용

마지막 단계에서 로더는 어셈블리의 임베디드 리소스에서 “xxxxxxxxxxxxxxxxxxxxxxxx.exe” 라는 특정 항목을 검색합니다. 리소스가 있으면 GetManifestResourceStream()을 사용하여 해당 콘텐츠를 추출합니다.

추출된 데이터는 GZIP 압축과 AES 암호화를 모두 사용합니다. 미리 정의된 키와 초기화 벡터를 사용하여 복호화됩니다. 암호가 해독되면 Remcos로 식별되는 페이로드가 실행되어 공격자가 손상된 시스템을 원격으로 제어할 수 있습니다.

네트워크 및 C&C 연결 세부 정보

성공적으로 실행된 후, Remcos RAT는 피해자의 공개 IP 주소를 기반으로 피해자의 지리적 위치를 검색하기 위해 geoplugin.net/json.gp로 GET 요청을 보냅니다. 이 API 응답에는 국가, 도시, 지역, 위도, 경도, 시간대 등과 같은 세부 정보가 포함됩니다. 수집된 데이터는 공격자가 피해자를 프로파일링하고 지리적 위치를 기반으로 공격을 조정하는 데 도움이 됩니다.

지리적 위치 정보 수집

그림 10 – 지리적 위치 세부 정보 수집

피해자의 시스템에 대한 완전한 제어권을 얻기 전에 Remcos RAT는 먼저 시스템 정보를 수집하여 명령 및 제어(C&C) 서버로 전송하여 감염된 장치를 등록합니다. 그리고 암호화된 통신을 용이하게 하기 위해 TLS를 사용하여 C&C 서버에 대한 보안 연결을 시작합니다. 각 패킷에는 고유 식별자 바이트 시퀀스와 전송되는 데이터의 크기, 그리고 아래 그림과 같이 의도된 작업을 지정하는 명령 ID가 포함됩니다.

피해자 디바이스 등록을 위한 초기 패킷

그림 11- 피해자 디바이스 등록을 위한 초기 패킷

렘코스는 명령 ID 0x4B를 사용하여 피해자의 시스템에서 공격자의 명령 및 제어(C2) 서버로 자세한 시스템 및 사용자 정보를 유출합니다. 이 데이터는 감염된 디바이스를 등록하고 감염된 호스트에 대한 제어를 설정하는 데 사용됩니다. 이 과정에서 일반적으로 다음 정보가 수집됩니다:

  • 장치 이름 및 사용자 이름
  • 피해자의 디바이스 위치
  • 운영 체제 정보
  • 메모리 상태
  • 렘코스 버전
  • Remcos 키로거 로컬 파일 경로
  • 렘코스의 전체 경로
  • 활성 프로그램 제목
  • 사용자 권한 수준
  • 시스템 가동 시간
  • 유휴 시간
  • 렘코스가 지정한 이름
  • C&C 서버 IP
  • Remcos 파일 형식
  • 프로세서 정보

최초 등록 후 명령 및 제어(C2) 서버는 ID 0x01의 명령을 Remcos 클라이언트로 전송합니다. 이 명령은 하트비트 또는 정보 비콘으로 작동하여 감염된 컴퓨터가 공격자에게 주기적으로 상태 업데이트를 보내도록 유도합니다.

비콘 패킷

그림 12 – 비콘 패킷

이에 대한 응답으로 렘코스는 0x4C 명령과 함께 활성 창 제목, 시스템 가동 시간 등의 런타임 시스템 원격 측정 정보가 포함된 정보를 전송합니다. 이를 통해 공격자는 감염된 시스템의 활동을 실시간으로 모니터링하고 디바이스에 대한 지속적인 제어를 유지할 수 있습니다.

비콘 요청에 대한 응답

그림 13 – 비콘 요청에 대한 응답

그 후 C&C 서버는 감염 초기 단계에서 수집한 지리적 위치 정보를 검색하기 위해 명령 ID 0x11을 사용하여 감염된 머신에 요청을 보냅니다. 이에 대한 응답으로 렘코스는 아래와 같이 동일한 명령 ID 0x11을 사용하여 지리적 위치 정보를 다시 전송합니다.

유출 지리적 위치 세부 정보

그림 14 – 유출 지리적 위치 세부 정보

또한 C&C 서버에서 파일이 다운로드될 때마다 명령 ID 0x44가 사용되는 것도 관찰되었습니다. 특히, MZ 헤더가 있는 파일을 검색할 때 아래와 같이 명령 0x44와 파일 콘텐츠가 통신에 포함됩니다.

추가 페이로드 다운로드

그림 15 – 추가 페이로드 다운로드(출처: malware-traffic-analysis.net))

서비스형 통합 SASE가 렘코스의 감염을 완화하는 데 어떻게 도움이 되나요?

통합 SASE 프레임워크는 네트워크 보안과 제로 트러스트 액세스 제어를 통합하여 데이터 유출 및 원격 조작을 위해 명령 및 제어(C2) 채널을 사용하는 Remcos RAT와 같은 위협을 방어합니다. SASE는 네트워크 트래픽에 대한 중앙 집중식 가시성을 제공하고 모든 위치에서 일관된 보안 정책을 시행합니다. 고급 IDPS, SWG, 실시간 위협 인텔리전스 등의 기본 제공 보안 기능은 특정 명령 ID와 의심스러운 HTTP 패턴을 비롯한 Remcos 활동의 지표를 탐지할 수 있습니다. SASE는 아웃바운드 HTTP 통신을 검사하여 지리적 위치 데이터를 유출하거나 원격 명령을 전달하려는 시도를 식별하여 무단 전송을 자동으로 차단하고 침해 위험을 최소화할 수 있습니다.

MITRE ATT&CK 매핑: TTP

  • T1566.001 – 피싱: 스피어피싱 첨부 파일
  • T1059.001 – 명령 및 스크립팅 인터프리터: PowerShell
  • T1204.002 – 사용자 실행: 악성 파일
  • T1027 – 난독화된 파일 또는 정보
  • T1055.002 – 프로세스 주입: 휴대용 실행 파일 주입
  • T1562.001 – 방어 기능 손상: 도구 비활성화 또는 수정
  • T1003 – OS 자격 증명 덤핑
  • T1082 – 시스템 정보 검색
  • T1016 – 시스템 네트워크 구성 검색
  • T1071.001 – 애플리케이션 계층 프로토콜: 웹 프로토콜
  • T1056.001 – 입력 캡처: 키 로깅
  • T1113 – 화면 캡처
  • T1123 – 오디오 캡처
  • T1125 – 비디오 캡처
  • T1041 – C2 채널을 통한 유출
  • T1020 – 자동화된 탈출

참조


https://www.fortinet.com/blog/threat-research/new-campaign-uses-remcos-rat-to-exploit-victims