최근 우리는 Remcos, DcRAT, AgentTesla와 같은 여러 개의 도둑질 맬웨어를 관찰했습니다. VIP키로거등이 스테가노그래피 캠페인을 통해 유포되었습니다. 그 뿌리를 추적해 보면, 이 캠페인은 꽤 오래전부터 존재해 왔지만, 그 이후로는 활동이 거의 없었습니다. 이 캠페인의 흥미로운 점은 공격이 조직되는 방식입니다.
이 블로그에서는 우리가 관찰한 캠페인을 통해 Remcos와 AsyncRAT의 배포에 대해 논의하겠습니다.
감염 사슬:
감염 사슬은 다음으로 시작됩니다. 피싱 엑셀의 취약점을 악용하여 .hta 파일을 다운로드하기 위한 HTTP 요청을 보내는 엑셀 파일이 포함된 메일입니다. .vbs 코드로 구성된 .hta 파일은 붙여넣기 URL에 연결하고 또 다른 난독화된 .vbs 스크립트를 다운로드하는 배치 파일을 작성합니다. .vbs 스크립트는 패딩된 Base64 인코딩된 두 번째 단계가 포함된 .jpg 파일을 다운로드합니다. 페이로드 (악성 로더) 파일이 디코딩되고, 스크립트를 통해 VAI 함수가 호출됩니다. URL과 대상 프로세스 이름을 인수로 받는 로더 파일은 base64로 인코딩된 역방향 파일을 다운로드하고, 이 파일을 디코딩하면 최종 페이로드가 생성됩니다.

피싱 이메일: 초기 공격 지점은 악성 엑셀 문서가 포함된 피싱 이메일로, 이 문서는 진짜 파일로 위장하여 사용자가 악성 코드가 포함된 첨부 파일을 열도록 속입니다.

악성 OLE 패키지가 포함된 Excel 문서:
해당 파일은 CVE-2017-0199 취약점을 악용하는 익스플로잇입니다. 이 파일에는 파일을 열 때 HTTP 요청을 생성하는 내장 OLE2 링크 객체가 포함되어 있습니다.

.HTA 스크립트
.hta 파일에는 vbs 코드(그림 4)가 들어 있는데, 이 코드는 붙여넣기 URL에 연결하고 엄청난 양의 가비지 코드가 들어 있는 스크립트인 vbs 파일을 다운로드하는 배치 파일을 작성합니다(그림 5).

대본을 쓴다 VBS 스크립트2:

정크 코드를 제거하고 단순화하면 다음을 사용하여 실행될 Base-64 인코딩 스크립트를 얻습니다. PowerShell을 (그림 6).


주의하세요. 여기서 VAI 메서드가 호출되는 동안 첫 번째 인수로 url이 전달되고 이는 $deject 변수에 저장됩니다. 그리고 다섯 번째 인수도 중요한데, 이는 나중에 두 번째 페이로드인 injector dll을 설명하면서 논의할 것입니다.
비슷한 방식으로 우리는 다음을 발견했습니다. 비동기화 배포되는 초기 체인은 대부분 동일할 것으로 예상되지만, 추적할 수 없었습니다. AsyncRAT의 경우, vbs 스크립트는 prnmngr.vbs로 위장하여 사용자를 속여 프린터 또는 프린터 연결을 추가, 제거, 나열하고 기본 프린터를 설정하고 표시하는 진짜 스크립트로 착각하게 합니다. 하지만 의심을 피하기 위해 중간에 작은 악성 코드가 삽입되어 있습니다.

아래는 이전 사례에서 설명한 것과 유사하게 하드코딩된 URL [hxxps://watchonlinehotvideos[.]top/omfg[.]jpg]에서 JPG 이미지를 다운로드한 코드 청크입니다.


이전 스크립트에서 메모했던 것과 마찬가지로, 여기서 전달된 첫 번째 인수는 변수 $restoredtext에 있는 뒤집힌 URL이고 다른 인수에 전달된 횡설수설한 값/무작위 문자열처럼 보입니다. 다시 한번 다섯 번째 인수를 염두에 두겠습니다.
두 경우 모두 샘플은 스테가노그래피를 사용하고 있으며, 다운로드된 jpg 파일(그림 11)은 base64로 인코딩된 악성코드를 포함하는 무해한 그림으로 위장합니다. 그림 7에서 볼 수 있듯이, < > 및 < > 악성 파일 전체를 얻은 다음 디코딩합니다.

두 파일 모두 내부 파일 이름이 "Microsoft.Win32.TaskScheduler.dll"인 VB.NET dll 파일인데, 이는 사용자를 속여 Microsoft dll이라고 생각하게 하기 위한 것일 수 있습니다.

두 DLL 모두 난독화되어 있지만, 수준이 다릅니다. Remcos 캠페인에서 얻은 DLL에는 공통된 .NET 함수 이름이 난독화되어 있지만, 일부는 직접 난독화되어 있습니다. 하지만 DLL의 코드는 동일하고, 같은 작업을 수행합니다.
DLL 코드는 난독화되어 있지만, 인수가 전달되는 것을 확인할 수 있습니다. 위협 행위자는 15개의 인수를 사용하여 VAI 메서드를 호출했습니다. 전달된 인수를 기반으로 해당 메서드는 프로세스 할로잉을 통해 다른 악성코드 실행 파일을 로드하거나, 지속성을 생성하는 등의 기능을 갖게 됩니다.

스크립트에서 메서드를 호출할 때 전달되는 첫 번째 인수(그림 7/그림 10)는 변수 $deject/$restoredtext에 저장된 URL이며 여기서는 QBXtX로 전달됩니다.
persistencia 값은 null/gibberish 값이고, 전달된 다른 값은 1로 디코딩되어 Delegate11.smethod_0에 전달되고 부울 값을 반환합니다. 따라서 최종 값은 0이 되고 조건은 실패합니다. 따라서 지속성을 유지할 활동이 없습니다.

QBXtX 인수로 전달된 역방향 URL은 "text5"에 저장되며, 웹 클라이언트의 도움을 받아 역방향 형식으로 base6로 인코딩된 "text64" 문자열 데이터를 다운로드합니다(그림 14). 이것이 최종 페이로드이며, "caspol.exe" / "msbuild.exe"(다섯 번째 인수)의 경로 "C:\Windows\SysWOW64"(Class219.smethod(10577)에서 디코딩됨)와 함께 "Tools.Ande" 함수에 인수로 전달됩니다. 이 함수는 다섯 번째 인수로 제공된 대상 프로세스를 사용하여 프로세스 할로핑을 수행합니다(그림 15).

위에서 볼 수 있듯이, CreateProcess API를 사용하여 일시 중단된 상태에서 새 프로세스를 생성합니다. 새로 생성된 프로세스는 NtUnmapViewOfSection을 사용하여 매핑을 해제하고 VirtualAllocEx를 사용하여 메모리를 할당합니다. 이 메모리에 악성 코드가 삽입됩니다. SetThreadContext를 사용하여 삽입된 코드에 진입점을 추가하고, 마지막으로 ResumeThread를 사용하여 프로세스를 재개합니다.
우리의 경우, 우리가 얻은 최종 페이로드는 Remcos와 AsyncRAT 샘플입니다(그림 16).

최종 탑재물: Remcos
Remcos는 2016년 출시 이후 맬웨어 세계에서 항상 존재해 왔습니다. 1.0 버전부터 최신 버전까지 Remcos가 여전히 중요한 이유는 핵심 기능인 명령 및 제어(C&C)를 처리하는 능력 때문입니다. 원격 제어 및 감시 소프트웨어로 출시된 폐쇄형 소스 도구로 시작한 Remcos는 오랜 시간 동안 발전해 왔습니다.
Remcos는 대부분 설정 블록을 가지고 있으며, 이 블록은 암호화되어 리소스 섹션의 "SETTINGS"에 저장됩니다. 이 블록은 시작 시 복호화되어 Remcos를 해당 설정 블록으로 초기화합니다.


Remcos는 C&C 통신을 위해 C2에 연결하고 공격자가 전송한 명령을 기다립니다. 추출된 구성 데이터의 주요 세부 정보는 다음과 같습니다.
C2: interestedthingsforkissinggirlwithloves[.]duckdns[.]org
파일 이름: Remcos.exe
봇넷 이름: zyno007
뮤텍스 생성됨: Rmc-IB3RDF
게다가 어떤 경우에는 Remcos가 AgentTesla와 같은 맬웨어를 배포하는 경우도 발견되었습니다.
최종 페이로드: AsyncRAT
비동기화 C#로 작성된 원격 접속 트로이 목마(RAT)로, 키 입력 로깅, 추가 페이로드 실행/주입, 명령 및 제어 등의 기능을 포함하여 표준 RAT 및 정보 도용 기능을 제공합니다.
백도어는 내장된 구성에 따라 기능을 수행합니다. 아래 그림(그림 19)에서 볼 수 있듯이, 실행은 주로 샌드박스를 회피하기 위해 사용되는 대기 시간을 정의하는 De_lay 함수로 시작됩니다.

여기의 InitializeSettings() 함수는 AES로 암호화된 모든 하드코딩된 구성에 액세스합니다.

verifyhash() 함수(그림 20)는 서버 인증서와 서버 서명을 사용하여 구성의 유효성을 최종적으로 확인합니다. 추출된 구성 데이터의 주요 세부 정보는 다음과 같습니다.
포트: 7878
호스트: 148[.]113[.]214[.]176
버전 : 1.0.7
MTX: asasasas2242dqwe
Pastebin: null
그룹:디아마
Pastebin 값은 "WebClient.DownloadString" API(그림 21)에서 사용되며, 이 API는 Pastebin 또는 다른 도메인에서 추가 리소스와 기타 페이로드를 다운로드할 수 있습니다. 이 경우, 이 값은 null이므로 구성에서 호스트와 포트를 선택하고 소켓 연결을 사용하여 C2와 상호 작용합니다.

IOC:
| Remcos IOC의 |
| 9d66405aebff0080cc5d28a1684d501fa7e183dc8b6340475fc06845509cb466 |
| 42813b301da721c34ca1aca29ce2e4c7d71ae580b519a3332a4ba71870b6a58e |
| f67c6341bfe37f5b05c00a0dda738f472fdabd6ea94ca8dc761f57f11ce12036 |
| aed291c023c3514fb97b4e08e291e03f52de91a2a8d311491b4ab8299db0aa0f |
| faed55ed0102b1b2e3d853e8633abecbb9cec6a5f41c630097d8eaeefafba060 |
| C2: interestedthingsforkissinggirlwithloves[.]duckdns[.]org |
| C2: freebirdkissingonmylipswithnicefeelings[.]duckdns[.]org |
| 비동기화 |
| b8fc29c02005c84131f34de083c2e81cdf615ff405877f9e73400bf35513c053 |
| 2d4ab87f9ea104075d372f4c211b1fb89adec60208d370b8fb2d748e1a73186c |
| b2e8f720740bbd46f6ae3f450f265ace1044fe232141fbd84f269eafeb290812 |
| a582e7e5b3ac37895e7cf484aaa8ea477deb90d99b47b2d9bfc018c604573889 |
| C2: 148[.]113[.]214[.]176 |
감지:
백도어.Remcos
백도어.MsilFC.S13564499
Trojan.loaderCiR
MITRE 공격 TTP:
| 술책 | 기술 ID | 성함 |
| 초기 액세스(TA0001) | T1566 | 피싱 (Phishing) |
| 실행(TA0002) |
T1204 |
사용자 실행 |
| 지속성(TA0003) | T1547.001 | 레지스트리 실행 키/시작 폴더 |
| 방어회피(TA0005) | T1055 | 공정 주입 |
| T1027 | 난독화된 파일 또는 정보 | |
| T1036.004 | 위장 작업 또는 서비스 | |
| 디스커버리(TA0007) | T1614 | 시스템 위치 검색 |
| 유출(TA0010) | T1041 | 명령 및 제어 채널을 통한 유출 |
| 명령 및 제어(TA0011) | T1001.0012 | 스테 가노 그래피 |
결론 :
이 블로그에서는 최근 스테가노그래피 캠페인의 전체 공격 체인을 살펴보았습니다. 무해해 보이는 JPG 파일에 악성 기능을 가진 인젝터 DLL이 포함되어 있음이 밝혀졌습니다. 또한 각 악성 페이로드가 어떻게 매우 체계적인 방식으로 신중하게 다운로드되고 실행되는지도 살펴보았습니다. 이 공격은 숙련된 사용자조차 속일 수 있는 정교한 위장 기법에 크게 의존했습니다. 흔히 그렇듯이, 일련의 사건은 여러 단계를 거쳐 RemcosRAT/AsyncRAT(다른 RAT 또는 백도어도 유사한 방식으로 유포될 가능성이 있음)을 배포하는 익스플로잇이 포함된 피싱 이메일에서 시작되었습니다. 이 경우, 명령 및 제어 서버는 추가 페이로드를 배포하여 피해자의 시스템을 더욱 손상시킬 수 있습니다.
이 캠페인은 우리의 안전과 데이터의 무결성을 보호하기 위해 경계를 늦추지 않고 강력한 사이버 보안 관행을 채택하는 것이 얼마나 중요한지 강조합니다.
저자:
키르티 크샤트리아
공저자:
마노즈 쿠마르 닐라메감



