1. IPany VPN [1]

- 한국 VPN 제공업체

2. 주요내용

PlushDaemon으로 명명된 중국 APT 그룹에의해 한국 VPN 공급 업체 IPany는 공급망 공격을 당함 [2]
> 공격자들은 합법적인 설치 프로그램에 SlowStepper 백도어를 삽입
> SlowStepper는 C++, Python, Go로 프로그래밍된 약 30개의 모듈로 구성된 대규모 툴킷을 갖추고 있음

 

- 사용자들은 VPN 다운로드 URL (hxxps://ipany[.]kr/download/IPanyVPNsetup.zip)에서 악성 파일을 다운
> 악성 IPanyVPNsetup.exe 설치 프로그램이 실행되면 여러 디렉토리를 생성하고, 정상 및 악성 파일을 모두 배포

[사진 1] 정상 및 악성 파일 배포

- 공격 체인

순서 설명
IPanyVPNSetup.exe 실행 - AutoMsg.dll 로드
- 레지스트리를 등록해 (값 : %PUBLIC%\Documents\WPSDocuments\WPSManager\svcghost.exe) 부팅 시 악성 구성 요소 svcghost.exe가 실행되도록 함
IPanyVPNSetup.exe가 
ExitProcess를 호출할 때
셸 코드로 실행 리다이렉션
- 셸 코드 : EncMgr.pkg를 메모리에 로드 및 실행

- EncMgr.pkg
> %PUBLIC%\Documents에 2개의 디렉터리를 생성 (WPSDocuments, WPSManager)하고 NetNative.pkg, FeatureFlag.pkg에서 구성 요소를 추출 및 실행
> 추출 및 실행 순서

⒜ NetNative.pkg에서 파일 추출
 - %PUBLIC%\Documents\WPSDocuments\WPSManager\assist.dll (악성 파일)
 - %PUBLIC%\Documents\WPSDocuments\WPSManager\msvcr100.dll (정상 파일)
 - %PUBLIC%\Documents\WPSDocuments\WPSManager\PerfWatson.exe (정상 파일)
 - %PUBLIC%\Documents\WPSDocuments\WPSManager\svcghost.exe (악성 파일)

⒝ NetNative.pkg 삭제

⒞ FeatureFlag.pkg를 winlogin.gif로 이동
> C:\ProgramData\Microsoft Shared\Filters\SystemInfo\winlogin.gif

⒟ assist.dll를 Winse.gif로 이동
> C:\ProgramData\Microsoft Shared\Filters\SystemInfo\Winse.gif

⒠ Winse.gif에서 lregdll.dll 추출
> %PUBLIC%\Documents\WPSDocuments\WPSManager\lregdll.dll

⒡ BootstrapCache.pkg를 Qmea.dat에 복사
> %PUBLIC%\Documents\WPSDocuments\WPSManager\Qmea.dat

⒢ ShellExecute API를 사용하여 svcghost.exe를 실행 및 종료
svcghost.exe - PerfWatson.exe 프로세스를 모니터링해 실행 중이 아니면 PerfWatson.exe를 실행해 lregdll.dll를 사이드 로드
- lregdll.dll는 winlogin.gif에서 SlowStepper 백도어 로드

[사진 2] 공격 체인 요약

2.1 SlowStepper 백도어

합법적인 DNS 서버를 사용해 7051.gsm.360safe[.]company에 대한 TXT 레코드를 획득
> 쿼리는 TXT 레코드의 처음 6바이트가 특정 문자열과 일치하는지 확인하고, 일치할 경우 나머지 문자열(C&C IP 주소를 포함하는 인코딩된 암호화문(base64, AES) 추출

※ TXT 레코드 : 도메인 및 하위 도메인과 관련된 텍스트 정보를 저장하며, 주로 메일이 신뢰할 수 있는 출처에서 온 것인지 확인하는데 사용 (SPF, DKIM, DMARC) [3]

[사진 3] 악성 도메인을 포함한 DNS TXT 레코드

획득한 C&C IP로 연결을 시도하며, 실패 시 API를 사용해 대체 C&C IP 획득
> 연결 실패 시 : st.360safe[.]company 도메인에 gethostbyname API를 사용해 해당 도메인에 매핑된 IP 주소를 얻어 대체 C&C 서버로 사용
> 통신이 설정되면 HOST 정보(CPU 정보, 호스트 이름, 실행 중인 프로세스 목록, 설치된 애플리케이션 목록 등), 파일 삭제, 셸 모드 활성화 등의 명령을 처리
> 또한 Python, C/C++, Go 언어로 작성된 모듈을 로드하고 실행하는 기능 포함

※ gethostbyname API : 주어진 도메인 이름을 이용하여 해당 도메인의 IP 주소를 알아내는 데 사용 [4]

 

- IoC 목록 [5]

3. 참고

[1] https://ipany.kr/
[2] https://www.welivesecurity.com/en/eset-research/plushdaemon-compromises-supply-chain-korean-vpn-service/
[3] https://hippogrammer.tistory.com/363
[4] https://learn.microsoft.com/ko-kr/windows/win32/api/winsock2/nf-winsock2-gethostbyname
[5] https://github.com/eset/malware-ioc/tree/master/PlushDaemon
[6] https://www.bleepingcomputer.com/news/security/ipany-vpn-breached-in-supply-chain-attack-to-push-custom-malware/

+ Recent posts