국내 기업들의 웹 서비스를 대상으로 하는 APT 공격 사례 분석

웹 서버는 불특정 다수의 사용자들에게 웹 서비스를 제공하기 위한 목적으로 외부에 공개되어 있기 때문에 공격자들의 대표적인 공격 대상이 되고 있다. AhnLab Security Emergency response Center(ASEC)은 취약점이 패치되지 않았거나 부적절하게 관리되고 있는 취약한 웹 서버들을 대상으로 한 공격을 모니터링하고 있다.

본 포스팅에서는 수년간 지속적으로 국내 기업들의 웹 서버를 공격 중인 APT 공격 사례를 정리하였으며, 공격에 사용된 다양한 악성코드 및 도구들의 IoC도 함께 공개한다. 공격자는 대부분의 감염 시스템들에서 “tripod”라는 이름의 계정을 악용하고 있으며 이러한 점은 해당 공격자를 특정할 수 있는 몇 가지 특징들 중 하나이다.

Figure 1. 대부분의 감염 시스템들에서 확인되는 tripod 사용자 계정


1. 개요

윈도우 서버에서 웹 서비스를 제공하는 웹 서버들로는 대표적으로 Internet Information Services(IIS) 웹 서버와 아파치 톰캣 웹 서버, JBoss, Nginx 등이 존재한다. 이러한 웹 서버들은 취약점이 패치되지 않았거나 부적절하게 관리되고 있는 경우 지속적으로 다양한 공격자들의 공격 대상이 된다. ASEC에서는 취약한 아파치 톰캣 웹 서버나 [1] JBoss 기반의 PACS(Picture Archiving and Communication System) 서버를 공격해 [2] 메타스플로잇 미터프리터를 설치한 공격 사례를 공개한 바 있다.

윈도우 서버를 사용 중인 국내 기업들의 경우 IIS 웹 서버의 비중이 높으며 이에 따라 IIS 서버를 대상으로 하는 공격 또한 다수 확인된다. 과거 중국 기반의 공격 그룹인 달빗 공격 사례나 [3] 국내 기업의 정보를 탈취하는 중국 해커 조직의 공격 사례에서도 [4] IIS 웹 서버가 공격 대상이 되었다. 이뿐만 아니라 Kimsuky 공격 그룹이 [5] IIS 웹 서버를 공격하거나 Lazarus 공격 그룹이 감염 이후 악성코드 배포 서버로 사용한 사례도 [6] 존재한다.

이번에 확인된 공격자 또한 윈도우 IIS 웹 서버를 공격 대상으로 하였다. 공격은 최소한 2019년부터 확인되고 있으며 Korea Internet & Security Agency(KISA)에서 2021년 “비정상 광고삽입 침해사고 사례 및 대응방안” [7] 이라는 주제의 보고서를 발간한 바 있다. 해당 보고서에 따르면 공격자는 특정 기업의 홈페이지를 공격해 무단으로 광고 코드를 삽입하였다. 공격자는 웹 서버의 방치된 게시판에 존재하는 파일 업로드 취약점을 통해 웹셸을 설치하였고 이후 최종적으로 광고 삽입 인프라를 구축하여 방문자에게 광고를 노출시켰다. 공격자는 탐지를 우회하기 위해 저녁 시간이나 서버에 관리자가 로그오프할 때 등 특정 조건이 만족할 때 광고 코드가 십입된 페이지로 변경하였으며, 아침이나 서버에 관리자가 로그온 할 때 등의 조건이 만족할 경우에는 다시 정상 페이지로 복구하는 치밀함을 보였다.

ASEC에서는 공격자가 적어도 2019년부터 최근까지도 국내 기업들을 대상으로 지속적인 공격을 진행하고 있는 것을 확인하였다. 공격이 확인된 국내 업체들로는 호텔, 통신 장비 제조사, 온라인 쇼핑몰, 외국계 제조업 등 다양하다. 공격 과정에서 대부분 알려진 악성코드 및 도구들이 사용되고 있음에 따라 다양한 공격들 중에서 해당 공격자를 특정하는데 어려움이 존재하지만 공격에 사용된 몇몇 도구들이 중국어 버전인 것이 확인되어 적어도 공격자가 중국어에 익숙한 사용자라는 사실을 추정하고 있다.

또한 KISA의 보고서의 사례에서는 공격자가 최종적으로 정상 웹 서비스에 광고를 삽입하는 목적을 보였다. 하지만 ASEC에서 확인된 사례에서는 광고와 관련된 파일 및 로그가 확인되지 않고 볼륨 섀도우 복사본을 삭제하는 행위가 확인되는 등 공격자가 감염 시스템에 랜섬웨어를 설치하는 등 다른 목적을 가질 수 있는 가능성이 보인다.


2. 공격자 분석

취약한 시스템들은 다양한 공격자들의 공격 대상이 된다. 특히 IIS 웹 서버나 MS-SQL 서버의 경우 지속적으로 다른 공격자들이 동일한 시스템을 공격하는 경향이 있다. 즉 여러 악성코드 및 공격 로그들 중에서 특정 공격자의 행위만을 추출하기에는 한계가 존재한다. 여기에서는 악성코드 및 공격 로그들 중에서 최대한 해당 공격자 만의 고유한 특징들을 토대로 짧은 기간 동안 이루어진 공격들을 기반으로 정리하였다. 하지만 동일한 시점에 다른 공격자가 유사한 공격을 수행했을 가능성 즉 다른 공격자의 악성코드 및 공격 로그들이 함께 포함되었을 수 있다는 점을 참고하자.


2.1. 공격 사례들의 공통점

일반적으로 IIS 웹 서버를 대상으로 하는 공격 사례에서는 웹셸, Potato, 권한 상승 취약점 PoC, Ladon 등 공통적인 악성코드들이 확인된다. 이러한 도구들은 대부분 중국어를 사용하는 공격자들이 공격에 자주 사용하는 경향이 있지만 인터넷에 공개되어 있기 때문에 파일만으로 공격자를 특정하는데 어려움이 있다.

하지만 공격자가 파일 진단을 우회하기 위해 악성코드들을 VMP로 패킹하거나 직접 개발하여 공격에 사용하는 사례가 존재하며 이는 해당 공격자 만의 특징이기 때문에 이를 기반으로 공격 사례를 분류하였다. 이외에도 공격자는 주로 악성코드들을 다음 경로에 생성한다는 점이 특징이다.

  • %ALLUSERSPROFILE%\Microsoft\DeviceSync\
  • %SystemRoot%\debug\WIA\

또한 Sy_Runas가 공격에 사용되는데 이는 웹셸을 통해 특정 사용자의 권한으로 명령을 실행하는 도구이다. Sy_Runas를 공격에 사용하는 사례는 현재 기준으로 흔하게 사용되지는 않으며 주로 다음과 같은 파일명으로 생성되는 점이 특징이다.

  • %SystemRoot%\debug\WIA\wiatrace.log
Figure 2. Sy_Runas

이외에도 국내 특정 업체의 웹 서버를 악성코드 다운로드 서버로 사용하고 있다. 공격자는 해당 업체를 공격해 악성코드들을 업로드하였고 이후 다른 업체들을 공격할 때 이를 다운로드해 사용하는 것으로 추정된다. 참고로 해당 주소는 추후 제어 유지를 위해 NetCat의 C&C 서버로도 사용되었다.

물론 가장 큰 특징은 “5. 지속성 유지” 항목에서 다루겠지만 지속성 유지를 위해 웹셸을 추가적으로 설치하는 악성코드가 확인된다는 점이다. 이에 따라 감염 시스템들은 작업 스케줄러에 해당 Batch 파일을 실행하는 명령이 등록되어 있다.

공격자는 감염 시스템을 장악한 이후 Administrator의 계정 정보를 탈취해 사용하거나 UserClone으로 Guest 계정에 Administrator 권한을 부여해 사용하기도 하지만 “tripod”라는 동일한 계정명이 다양한 시스템들에서 확인되는 것으로 보아 “tripod” 계정을 생성해 사용하는 것으로 추정된다.


2.2. 공격에 사용된 중국어 도구들

공격에 사용된 도구들 중 다수는 이미 공개되어 있는 도구들이며 공격자가 직접 제작한 것으로 추정되는 파일들도 모두 PDB와 같은 부가적인 정보들이 존재하지 않는다. 하지만 공격자가 공격에 사용한 도구나 직접 제작한 악성코드들에서 중국어 환경과의 연관성이 확인되었다.

공격자는 지속성 유지 과정에서 WinRAR를 사용해 웹셸을 설치한다. 몇몇 사례에서는 일반적인 영문 버전의 WinRAR가 사용되었지만 2019년도에 확인된 공격에서는 중국어 버전의 rar가 사용된 이력이 확인된다.

Figure 3. 중국어 버전의 WinRAR.exe

공격자는 공격 과정에서 테스트 목적의 프로그램을 제작하여 사용한 사례가 존재한다. 테스트 프로그램은 WinRAR SFX 형태의 실행 파일이며 어떤 파일은 단순하게 동일한 경로에 “test.txt”라는 이름의 빈 파일을 생성하는 행위가 전부지만 어떤 파일은 동일한 경로에 “test”라는 이름의 빈 파일 생성 외에도 다음 경로에 존재하는 “sd2.bat” 파일을 실행하는 명령이 함께 포함되어 있다. 참고로 해당 경로는 공격에 사용되는 경로이며 만약 해당 경로에 Batch 파일이 존재할 경우 실행시키는 Launcher 기능을 담당할 수도 있다.

> “C:\Windows\System32\cmd.exe” /c C:\WINDOWS\System32\spool\drivers\color\sd2.bat
Figure 4. 테스트 목적으로 추정되는 WinRAR SFX 실행 파일

위의 WinRAR SFX 실행 파일은 중국어 버전으로 제작되었으며 실행 파일의 리소스 영역을 보면 중국어 버전의 WinRAR 문자열들을 확인할 수 있다.

Figure 5. 중국어 버전으로 제작된 WinRAR SFX 실행 파일


3. 초기 침투

KISA의 보고서에 따르면 공격자는 피해 기업의 홈페이지에 파일 업로드 취약점을 이용해 웹셸을 첨부 파일로 업로드하였다. 공격자는 최초로 업로드한 1차 웹셸을 이용해 업로드 경로가 아닌 일반 경로에 2차 웹셸(1.asp)를 추가적으로 업로드하였다고 하며, 자사 AhnLab Smart Defense (ASD) 로그의 진단 로그를 보면 KISA의 보고서와 유사한 파일명인 “1.aspx”가 존재한다.

웹셸 경로명
D:\***Root_DB\1.aspx
D:\**trust\www\photo_upload..1.aspx
D:\**trust\www\photo_upload\1(0).aspx
E:\****Hotel\upload\thanks\test.asp
C:\***Pay15\source\source.asp
Table 1. 탐지된 웹셸들의 경로명

공격자는 이후 2차 웹셸로 권한 상승 도구인 Potato 악성코드와 UserClone, 미미카츠 등의 악성코드들을 생성하였다고 한다. 실제로 자사 ASD 로그를 보면 웹셸 업로드 이후 다양한 악성코드들이 업로드된 이력이 존재한다.

다음은 공격 과정에서 확인된 웹셸들 중 수집된 유형들로서 실제 공격에서는 아래의 유형들을 제외하고도 훨씬 많을 것으로 추정된다.

Figure 6. 공격에 사용된 것으로 추정되는 웹셸들


4. 권한 상승

4.1. Potatos

Potato 악성코드들은 권한 상승 기능을 담당하는 악성코드이며 권한 상승 방식에 따라 JuicyPotato, RottenPotato, SweetPotato 등 다양한 유형들이 존재한다. 공격자들은 웹셸이나 사전 공격을 통해 감염 시스템을 제어할 수 있다고 하더라도 w3wp.exe 프로세스가 적절한 권한이 존재하지 않기 때문에 원하는 악성 행위를 수행할 수 없다. 이는 MS-SQL 서버의 sqlservr.exe 프로세스도 동일한데 이러한 문제를 해결하기 위해 공격자들은 공격 과정에서 권한 상승 악성코드들을 함께 사용하는 경향이 있다.

특히 IIS 웹 서버나 MS-SQL 데이터베이스 서버를 대상으로 하는 공격에서는 주로 Potato 권한 상승 악성코드들이 사용된다. Potato는 특정 권한이 활성화된 일부 프로세스들을 악용하는 방식으로 권한을 상승하며, 이후 공격자는 상승된 권한으로 악성 행위를 수행할 수 있다.

공격자는 BadPotato, EfsPotato, GodPotato, JuicyPotato, JuicyPotatoNG, PetitPotato, PrintNotifyPotato, SharpEfsPotato, SweetPotato 등 대부분의 Potato 유형들을 공격에 사용하였다. 최근에는 국내 특정 업체의 웹 서버에 악성코드들을 업로드하고 다른 시스템에 대한 공격 과정에서 이를 다운로드해 사용하였다. 공격자는 이미 제어를 탈취한 시스템을 악성코드 배포 서버로 활용하고 있는 것으로 보인다.

Figure 7. 웹셸을 이용해 Potato 악성코드를 설치하는 로그

공격에 사용된 Potato 악성코드들 중에는 이미 수년 전부터 확인되는 파일들뿐만 아니라 공격자가 직접 VMProtect로 패킹한 파일들도 존재한다. 최근에는 깃허브에 공개되어 있는 패킹 도구인 “go-shellcode”로 패킹된 Potato 악성코드들이 공격에 사용되고 있다. [8] “go-shellcode”는 Go 언어로 개발되어 있으며 다음과 같이 다양한 기법들을 이용해 셸코드를 실행시켜주는 도구이다.

Figure 8. go-shellcode 패커

최근 공격자들은 파일 진단을 우회하기 위한 목적으로 Go 언어로 악성코드를 패킹하는 경향이 있으며, “go-shellcode” 또한 공격자가 지정한 악성코드를 암호화해서 가지고 있다가 실행 중 메모리 상에서 복호화하여 실행해주는 도구이다. 아래 그림의 왼쪽은 “go-shellcode”에서 EtwpCreateEtwThread() 함수를 이용해 셸코드를 실행하는 루틴이며 오른쪽은 CreateFiber() 함수를 이용해 셸코드를 실행하는 루틴이다. 공격자는 Potato 악성코드들을 “go-shellcode”의 코드들을 이용해 패킹하였다.

Figure 9. 패킹된 Potato 악성코드들

공격자는 Potato 악성코드들을 이용해 다양한 명령들을 실행하였으며, 로그들 중에서는 윈도우 디펜더의 탐지를 우회하기 위한 명령도 확인된다.

e:\win64_*****_client\client\stage\cmd.exe /c cd /d
c:\quarantine_mz\&
etwpcreateetwthread1.gif
-t * -p c:\windows\system32\cmd.exe -a
“/c powershell set-mppreference -disablerealtimemonitoring $true” -l 1500&
echo [s]&cd&echo+[e]


4.2. 기타 권한 상승 악성코드

공격자가 권한 상승을 위해 대부분 potato 악성코드들을 사용하였지만 이외에도 PrintSpoofer나 취약점 PoC 악성코드들도 다수 확인된다. 특히 PrintSpoofer 악성코드들은 대부분의 감염 시스템들에서 확인되는 것으로 보아 공격자는 권한 상승 목적으로 Potato 악성코드들과 함께 PrintSpoofer를 주로 사용하는 것으로 보인다.

Figure 10. PrintSpoofer 권한 상승 도구

물론 이외에도 COMahawk (CVE-2019-1405, CVE-2019-1322) [9], CVE-2020-0787 [10], IIS LPE (by k8gege) [11] 등 다양한 도구들도 공격에 사용되고 있다.


5. 지속성 유지

5.1. 추가 웹셸 설치

KISA의 보고서에 따르면 공격자는 “CredentialTask”, “CertificateTask”라는 작업을 등록하여 관리자의 퇴근 시간대에 기업의 홈페이지에서 무단 광고 페이지를 노출시켰다. 등록된 작업은 Batch 파일을 실행시키며 이것이 웹셸을 설치하고 광고 페이지를 등록하는 기능을 담당한다. 무단 광고는 특정 시간대에 홈페이지의 소스 코드를 광고 코드가 삽입된 스크립트로 변경하거나 다시 원복 시키는 방식으로 이루어진다.

현재 조사 대상 시스템의 경우 작업 스케줄러에 의해 실행되는 Batch 파일의 이름은 “winrmr.cmd”이며 설정 파일 “SCFConfig.dat”를 읽어와 악성 행위를 수행한다. 참고로 해당 시스템에서 공격자는 무단 광고를 노출시키는 기능은 활성화하지 않은 것으로 추정되는데 이는 설정 파일에 웹셸을 담당하는 첫 번째 라인만 존재할 뿐 광고가 삽입된 웹페이지에 대한 다른 라인들은 존재하지 않기 때문이다. 또한 설정 파일에 지정된 압축 파일 “winrnr.cmd”에도 웹셸 파일만 존재하고 광고가 삽입된 웹페이지 파일들은 존재하지 않는다.

SCF1.dat|”D:\***demo\www\cscenter\ajaxNoticefaq.asp”|AA3A20597084944FDCBE1C3894FD7AB5
Figure 11. 광고 삽입 페이지 관련 설정이 포함된 설정 파일 – 출처 (KISA 보고서)

Batch 파일은 압축 파일 “winrnr.cmd” 안에 저장되어 있는 웹셸 “SCF1.dat”의 MD5를 구한 후 설정 파일의 3번째 필드에 존재하는 값과 비교하여 검사한다. 해시가 동일할 경우 두 번째 필드에 지정된 경로로 웹셸을 복사하고 권한을 설정한다.

Figure 12. 복사한 웹셸에 권한을 설정하는 루틴

이러한 과정을 통해 시스템에 주기적으로 웹셸이 설치되며 공격자는 이를 이용해 감염 시스템을 제어할 수 있다. 웹셸은 정상 스크립트로 보이는 주석의 맨 아래에 삽입되어 있다.

Figure 13. 새로운 경로에 생성된 웹셸
웹셸 설치 경로
C:\Webservice\****do\board\notice\board_write.asp
C:\WebService\****do\products\inquiry\board_view.asp
d:\*****cokr\www\member\login.asp
d:\*****shop\www\product\product.asp
d:\style\www\assets\fontawesome\font\font.asp
d:\*****bie\www\about\index.asp
d:\*****allen\www\customer_service\notice.asp
D:\***demo\www\cscenter\ajaxNoticefaq.asp
E:\****Hotel\include\check8.asp
E:\****no\www\iprice\iprice.asp
Table 2. 지속성 유지를 위한 웹셸 설치 경로


5.2. 권한 복사 악성코드

공격자는 권한 복사 악성코드를 이용해 Guest 계정에 Administrator 계정의 권한을 부여하였다. 이는 레지스트리에 존재하는 SAM 키의 F 값을 복사하는 방식으로 이루어진다. SAM 키의 F 값에는 RID를 포함한 정보가 저장되는데 Guest 계정의 RID 값을 Administrator 계정의 RID 값으로 변경하여 Guest 계정을 사용하는 공격자가 관리자 권한으로 악의적인 행위를 수행할 수 있게 된다.

Figure 14. 권한 복사 도구


5.3. UserClone

UserClone은 관리자 그룹의 계정을 생성하거나 특정 계정의 권한을 다른 계정으로 복사하는 기능을 제공하는 도구이다. /Clone 옵션을 사용할 경우 두 번째 인자로 전달받은 계정의 권한을 첫 번째 인자로 전달받은 계정에 복사하는데 위에서 다룬 권한 복사 악성코드와 동일한 방식이 사용된다. 실제 KISA의 보고서에서도 공격자가 Guest 계정의 권한을 Administrator 계정의 권한으로 변경하기 위해 UserClone을 사용했던 내용이 존재한다.

Figure 15. UserClone 도구


6. 자격 증명 정보 수집

6.1. 미미카츠 / ProcDump

공격자는 이후 현재 감염 시스템에 존재하는 자격 증명 정보들을 수집하기 위해 미미카츠를 설치하였다. 위와 같이 직접 관리자 계정을 생성하거나 UserClone 도구를 이용해 권한을 상승시키기도 하지만 공격 과정에서 Administrator 계정을 악용하는 로그가 확인되는 것을 보면 탈취한 계정을 사용하기도 하는 것으로 보인다.

미미카츠는 윈도우 운영체제 환경에서 자격 증명 정보를 추출하는 기능을 지원하는 도구이다. 윈도우 시스템에 존재하는 평문 비밀번호나 해시 정보를 추출해 줄 뿐만 아니라 획득한 자격 증명 정보를 이용한 측면 이동 공격도 지원한다. 이에 따라 기업 내부 네트워크를 장악하여 정보를 탈취하거나 랜섬웨어를 설치하기 위한 수단으로 자주 사용되고 있다.

참고로 최신 윈도우 환경에서는 기본적으로 WDigest 보안 패키지를 이용한 평문 비밀번호 획득이 불가능하며, UseLogonCredential 레지스트리 키를 설정해야 평문 비밀번호를 얻을 수 있다. 이에 따라 공격자는 UseLogonCredential 레지스트리 키를 추가하기 위해 다음과 같은 명령을 실행하였다.

> reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

일반적으로 미미카츠는 현재 실행 중인 lsass.exe 프로세스의 메모리를 읽어와 복호화하여 자격 증명 정보를 구하지만 메모리 덤프 파일이 존재할 경우 이를 인자로 전달받아 자격 증명 정보를 구할 수 있다. 최근 공격자들은 보안 제품의 탐지를 우회하기 위해 정상 프로그램인 Sysinternals 사의 ProcDump를 이용하기도 한다. 미미카츠와 같은 악성코드가 lsass.exe 프로세스의 메모리에 접근하는 것이 불가할 경우 대신 정상 프로그램인 ProcDump로 메모리를 덤프하여 파일로 생성하고 이를 미미카츠로 읽어 복호화하는 방식이다. 다음과 같이 ProcDump를 이용해 lsass.exe 프로세스의 메모리를 덤프하는 명령이 확인되는 것을 보면 공격자 또한 이러한 방식으로 미미카츠를 사용한 것으로 추정된다.

경로명인자
E:\****Hotel\faq\f.asp-accepteula -ma lsass.exe e:\****hotel\faq\lsass.dmp
%ALLUSERSPROFILE%\microsoft\devicesync\procdump64.exe-accepteula -ma lsass c:\programdata\microsoft\devicesync\lsass.dmp
Table 3. ProcDump를 이용한 자격 정보 탈취


6.2. Runas 악성코드들

Runas 유형의 악성코드들은 인자로 특정 사용자의 계정 정보를 전달받아 해당 계정의 권한으로 명령을 실행하는 기능을 담당한다. 이러한 악성코드들로는 RunasCs나 Sy_Runas가 있으며 공격자는 두 가지 모두 공격에 사용하고 있다. 로그 상으로는 Sy_Runas의 비중이 더 높지만 닷넷으로 개발된 RunasCs 또한 대부분의 시스템들에서 함께 확인된다.

Figure 16. RunasCs 도구

공격자는 웹셸을 이용해 명령을 실행할 때 Potato와 같은 권한 상승 도구들을 사용하거나 Runas 악성코드들을 사용한다. Runas를 사용할 때는 미미카츠를 통해 수집한 기존 계정의 자격 증명 정보를 이용하기도 하고 UserClone을 통해 상승된 권한을 갖는 Guest 계정을 이용하기도 하며 직접 추가한 것으로 추정되는 계정을 사용하기도 한다. 공격 과정에서는 이렇게 다양한 계정들이 사용되지만 눈에 띄는 계정으로는 “tripod” 계정이 있다. 해당 계정은 대부분의 감염 시스템들에서 보이는 공통점들 중 하나인데 이는 공격자가 직접 추가한 계정으로 추정된다.

경로명인자
%ALLUSERSPROFILE%\oracle\java\java.txttripod “c!!l)0w101” “whoami”
%ALLUSERSPROFILE%\oracle\java\java.txttripod “c!!l)0w101” “query user”
%SystemRoot%\debug\wia\wiatrace.logtripod c!!l!0w111 “query user”
%SystemRoot%\debug\wia\wiatrace.logtripod ww28win “whoami”
%SystemRoot%\debug\wia\wiatrace.logtripod “c)!l(4w096” “query user”
%SystemDrive%***pay50\sample\popup_img\bg1.giftripod “c)!l!2w011” “query user”
Table 4. Sy_Runas를 이용해 tripod 계정의 권한을 검사하는 명령 로그


7. 원격 제어

7.1. NetCat

공격자는 WebShell을 이용해 추가 악성코드들을 생성하고 실행하였다. 하지만 이외에도 NetCat을 설치하고 리버스 셸로 사용하였다. 공격에 사용된 C&C 주소는 IP 포맷이지만 실제 위에서 다룬 다운로드 주소 즉 이미 침투해 악성코드를 업로드했던 업체의 주소와 동일하다.

Figure 17. NetCat 실행 로그


7.2. Ladon

공격자는 이외에도 공격 과정에서 오픈 소스 해킹 도구인 Ladon을 사용하였다. [12] Ladon은 다음과 같은 깃허브 페이지를 통해서도 알 수 있겠지만 중국어를 기반으로 한 공격자들이 주로 사용하는 도구들 중 하나이다. [13] Ladon은 공격 과정에서 필요한 다양한 기능들을 지원하기 때문에 공격자는 공격 대상 시스템을 장악한 이후 Ladon을 이용해 스캐닝, 권한 상승, 계정 정보 탈취와 같은 다양한 악성 행위를 수행할 수 있다.

Figure 18. Ladon 깃허브 페이지

실행 파일 포맷의 Ladon뿐만 아니라 파워셸 포맷인 PowerLadon도 공격에 함께 사용되었다. [14] 공격자는 파워셸 명령을 이용해 이미 침해한 국내 업체의 웹 사이트에서 PowerLadon을 다운로드한 후 badpotato 명령으로 권한 상승이 정상적으로 이루어졌는지를 검사하였다.

Figure 19. PowerLoadon 설치 명령


8. 공격 이후

KISA의 보고서에 따르면 공격자는 “CredentialTask”, “CertificateTask”라는 작업을 등록하여 관리자의 퇴근 시간대에 기업의 홈페이지에서 무단 광고 페이지를 노출시켰다. 적어도 2021년 기준 공격자의 최종 목적은 광고 페이지 노출로 수익을 얻는 것이었던 것으로 추정되며 실제 자사 ASD 로그에서도 감염 시스템들 중 해당 작업이 작업 스케줄러에 등록되어 실행되는 로그도 확인된다.

Figure 20. 스케줄러에 등록된 CertificateTask 작업

하지만 “5. 지속성 유지” 항목에서 다룬 시스템에서는 지속성 유지를 위한 웹셸 설치 외에 광고가 포함된 웹 페이지로 변경하는 기능이 없는 경우도 존재한다. 또한 특정 시스템에서는 공격자가 Sy_Runas를 이용해 감염 시스템의 볼륨 섀도우 복사본을 제거하는 로그도 확인된다.

Figure 21. 볼륨 섀도우 복사본을 삭제하는 명령 로그

이를 보면 공격자의 초기 목적은 무단 광고 노출을 통해 수익을 얻는 것이었지만 최근에는 랜섬웨어 공격과 같은 다른 목적이 존재할 수도 있다는 가능성을 열어준다.


9. 결론

최근 지속적으로 국내 기업들의 웹 서버를 대상으로 하는 APT 공격이 확인되고 있다. 공격자는 최소한 2019년부터 공격을 시작하고 있으며 주로 기업의 홈페이지에 광고를 삽입하는 것을 목적으로 하고 있다. 하지만 최근 확인되는 공격 로그를 보면 랜섬웨어 설치와 같은 다른 목적이 추가되었을 수도 있다.

공격자는 부적절하게 관리되고 있거나 취약점이 패치되지 않은 웹 서버를 공격하여 웹셸을 설치하였다. KISA의 보고서에 따르면 주로 파일 업로드 취약점을 통해 웹셸을 업로드한 것으로 추정되며 이후 권한 상승, 지속성 유지, 자격 증명 정보 탈취 등의 과정을 거쳐 감염 시스템에 대한 제어를 획득하였다.

관리자는 웹 서버에 존재하는 파일 업로드 취약점을 점검하여 초기 침투 경로인 웹셸 업로드를 사전에 막을 수 있도록 해야 한다. 그리고 비밀번호를 주기적으로 변경하고 접근 제어를 설정하여 탈취된 계정 정보를 이용한 측면 이동 공격에 대응해야 한다. 또한 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다.

파일 진단
– Dropper/Win32.Agent.C106924 (2011.10.12.00)
– Exploit/Win.Agent.C5224192 (2022.08.17.01)
– Exploit/Win.Agent.C5404633 (2023.04.04.00)
– Exploit/Win.Agent.C5404635 (2023.04.04.00)
– Exploit/Win.BadPotato.R508814 (2022.08.04.01)
– Exploit/Win.DcomRpc.R554379 (2023.01.28.00)
– Exploit/Win.JuicyPotato.C2724641 (2022.08.09.00)
– Exploit/Win.JuicyPotato.C5417758 (2023.04.25.01)
– Exploit/Win.JuicyPotato.C5417761 (2023.04.25.01)
– Exploit/Win.JuicyPotato.C5445175 (2023.06.23.03)
– Exploit/Win.JuicyPotato.R495502 (2022.06.03.01)
– Exploit/Win.PetitPotato.C5418234 (2023.04.26.00)
– Exploit/Win.PetitPotato.C5418237 (2023.04.26.00)
– Exploit/Win.PetitPotato.R575177 (2023.04.26.00)
– Exploit/Win.PetitPotato.R588349 (2023.06.23.03)
– Exploit/Win.Potato.C5444398 (2023.07.29.00)
– Exploit/Win.PrintNotifyPotato.C5418245 (2023.04.26.00)
– Exploit/Win.PrintNotifyPotato.R561362 (2023.03.10.00)
– Exploit/Win.PrintSpoofer.C5404637 (2023.04.04.00)
– Exploit/Win.PrintSpoofer.C5445168 (2023.06.23.03)
– Exploit/Win.PrintSpoofer.R346208 (2020.07.29.04)
– Exploit/Win.PrintSpoofer.R358767 (2020.12.18.06)
– Exploit/Win.PrintSpoofer.R456477 (2021.12.07.00)
– Exploit/Win.SharpEfsPotato.C5418239 (2023.04.26.00)
– Exploit/Win.SharpEfsPotato.C5418240 (2023.04.26.00)
– Exploit/Win.SharpEfsPotato.C5418242 (2023.04.26.00)
– Exploit/Win.SharpEfsPotato.C5418243 (2023.04.26.00)
– Exploit/Win.SweetPotato.C5405993 (2023.04.06.02)
– Exploit/Win.SweetPotato.C5418244 (2023.04.26.00)
– HackTool/PowerShell.Ladon.SC187629 (2023.04.04.00)
– HackTool/Win.Ladon.R442618 (2021.09.25.00)
– HackTool/Win.Netcat.C5283500 (2022.10.18.03)
– HackTool/Win.RunAs.C4406737 (2021.04.07.03)
– HackTool/Win.RunAs.C5404638 (2023.04.04.00)
– HackTool/Win.RunAs.C5417759 (2023.04.25.01)
– HackTool/Win.RunAs.C5418233 (2023.04.26.00)
– HackTool/Win.RunAs.C5445161 (2023.06.23.03)
– Malware/Win.Generic.C4432989 (2021.04.22.01)
– Trojan/BIN.Generic (2023.07.28.03)
– Trojan/CMD.Agent.SC191319 (2023.07.28.03)
– Trojan/Win.Agent.C5418231 (2023.04.26.00)
– Trojan/Win.Agent.C5418232 (2023.04.26.00)
– Trojan/Win.Escalation.R524707 (2022.10.04.02)
– Trojan/Win.Generic.C4491018 (2021.05.26.01)
– Trojan/Win.Generic.C5228587 (2022.08.27.01)
– Trojan/Win.Generic.R529888 (2022.10.15.04)
– Trojan/Win.Mimikatz.R563718 (2023.03.16.02)
– Trojan/Win.MSILMamut.C5410538 (2023.04.13.01)
– Trojan/Win.PrintSpoofer.R597367 (2023.08.12.03)
– Trojan/Win.UserClone.C5192153 (2022.07.04.02)
– Trojan/Win32.HDC.C111465 (2011.10.19.00)
– Trojan/Win32.Mimikatz.R271640 (2019.05.21.05)
– Unwanted/Win32.NTSniff_v110 (2005.03.08.00)
– WebShell/ASP.Agent.SC191320 (2023.07.28.03)
– WebShell/ASP.Generic (2023.01.27.03)
– WebShell/ASP.Generic.S1855 (2022.06.22.03)

행위 진단
– Malware/MDP.SystemManipulation.M1471
– Execution/MDP.Powershell.M2514
– CredentialAccess/MDP.Mimikatz.M4367

IOC
MD5
WebShell

– 612585fa3ada349a02bc97d4c60de784 : D:\***Root_DB\1.aspx
– eb1c6004afd91d328c190cd30f32a3d1 : D:\**trust\www\photo_upload..1.aspx, D:\**trust\www\photo_upload\1(0).aspx, E:\****Hotel\upload\thanks\test.asp, C:\***Pay15\source\source.asp

Potato (BadPotato)
– 9fe61c9538f2df492dff1aab0f90579f : %SystemRoot%\debug\wia\badpotatonet2.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\BadPotatoNet2.exe, %ALLUSERSPROFILE%\BadPotatoNet2.exe
– ab9091f25a5ad44bef898588764f1990 : %ALLUSERSPROFILE%\Microsoft\DeviceSync\BadPotatoNet4.exe

Potato (EfsPotato)
– 9dc87e21769fb2b4a616a60a9aeecb03 : E:\app\Administrator\product\EfsPotato2.0.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\EfsPotato2.0.exe

Potato (GodPotato)
– 5f3dd0514c98bab7172a4ccb2f7a152d : C:\Oracle\GodPotato-NET2.exe
– c7c0e7877388f18a771ec54d18ac56e6 : E:\app\g.exe

Potato (JuicyPotato)
– 2331a96db7c7a3700eb1da4c730e8119 : %SystemRoot%\debug\WIA\jpms.log
– 8e228104d545608e4d77178381324a0b : %SystemRoot%\debug\wia\juicypotatomsmsmsmsms.exe

Potato (JuicyPotatoNG)
– 7756312d5da2cfb6a4212214b65b0d9a : %ALLUSERSPROFILE%\microsoft\devicesync\createfiber.log
– 15aa2aea896511500027c5b970454c10 : %ALLUSERSPROFILE%\usoshared\etwpcreateetwthread1.gif
– 72eee0b89c707968fb41083f47739acf : %ALLUSERSPROFILE%\microsoft\devicesync\juicypotatong_ms.exe, %ALLUSERSPROFILE%\USOShared\jpng.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\JuicyPotatoNG_ms.exe, C:\Windows\debug\WIA\JuicyPotatoNG_ms.exe
– f530974b0cf773dc2efdff66c2b57e7f : %SystemDrive%\quarantine_mz\registries\1.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\JuicyPotatoNG_ms_ok.exe
– 19c5eb467633efb48ceb49db2870de72 : %ALLUSERSPROFILE%\Microsoft\DeviceSync\JuicyPotatoNG.exe, C:\Windows\debug\WIA\JuicyPotato_x64.exe
– 0ea582880c53419c8b1a803e19b8ab1f : %ALLUSERSPROFILE%\Microsoft\DeviceSync\EtwpCreateEtwThread.log, %ALLUSERSPROFILE%\USOShared\EtwpCreateEtwThread.log
– 8017f161b637cb707e3e667252c2235d : %ALLUSERSPROFILE%\USOShared\j.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\JuicyPotatoNG.exe, %SystemRoot%\debug\WIA\JuicyPotatoNG.exe

Potato (PetitPotato)
– 659d5c63ae9a1a3c5a33badc53007808 : %SystemDrive%\quarantine_mz\sd2.gif
– 9dc62c3a97269f780eb54ebcd43c77a8 : %ALLUSERSPROFILE%\microsoft\devicesync\test.gif
– bffe140d2e2a7f44cbe3e3bf9b50f3b5 : %ALLUSERSPROFILE%\microsoft\devicesync\1.exe
– d66dfce79df451f797775335fac67e9d : %ALLUSERSPROFILE%\microsoft\devicesync\3.exe
– 435351d097dcc253e48b89575a40427c : E:\****check_ASP_N\123.doc
– 66379480d44ad92c07f6b5a9dfb3df3d : E:\****check_ASP_N\test.gif
– 4875e5a46aec782f7e4cfb2028e6426a : E:\****check_ASP_N\p.gif

Potato (PrintNotifyPotato)
– fad4ea01a92d0ede3f75d13b1a96238b : %ALLUSERSPROFILE%\PrinterNotifyPotato.exe
– 7600f8875fb23a6057354c3426b1db79 : %ALLUSERSPROFILE%\ahnlab\ais\p.log, %ALLUSERSPROFILE%\USOShared\p.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\PrintNotifyPotato2.0.vmp.exe
– 98154aeaec8aba3c376c7c76e11a2828 : %ALLUSERSPROFILE%\USOShared\pp.exe

Potato (SharpEfsPotato)
– 661126f645c5eb261b0651744a17e14b : %ALLUSERSPROFILE%\microsoft\devicesync\20230404.log, %ALLUSERSPROFILE%\ahnlab\ais\v3.log
– 63294f453901077fcb62eeb5c84e53d1 : %ALLUSERSPROFILE%\ahnlab\ais\sep_vmp.sln
– 69bde490dc173dbed98b2decacd586c4 : %ALLUSERSPROFILE%\ahnlab\ais\result.log
– e8e00a5771cafa4fb9294fea549282de : E:\****check_ASP_N\NtQueueApcThreadEx.log
– 227df13221db37ab9673ae1af4e6278a : E:\****check_ASP_N\HeapAlloc.jpg, %ALLUSERSPROFILE%\USOShared\h.gif
– c9dc55872982efcadba4ce197ba34fbd : E:\****check_ASP_N\pp.gif

Potato (SweetPotato)
– 021924959a870354cc6c9a54fe7dcf83 : C:\Quarantine_MZ\123.gif, %ALLUSERSPROFILE%\Microsoft\DeviceSync\SweetPotato_4.7.2.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\SweetPotato_4.7.2_original.exe
– bcb6dbd50b323ea9a6d8161a7e48f429 : E:\****check_ASP_N\EtwpCreateEtwThread.jpg
– a7db0665564b2519ef5eef6627c716db : %ALLUSERSPROFILE%\USOShared\Logs\vmp1.log

PrintSpoofer
– 7e9125c89d7868f17813ed8c1af2e2c1 : %ALLUSERSPROFILE%\USOShared\PrintSpoofer928.exe, %ALLUSERSPROFILE%\microsoft\devicesync\printspoofer911.exe, %SystemRoot%\debug\wia\printspoofer928.exe, %ALLUSERSPROFILE%\usoshared\logs\vmp2.log, C:\Windows\debug\WIA\p.log
– 96b3b2ccb2687a9e2a98ac87a788dda8 : %SystemRoot%\debug\WIA\PrintSpoofer.exe
– 108da75de148145b8f056ec0827f1665 : %ALLUSERSPROFILE%\Microsoft\DeviceSync\PrintSpoofer64.exe
– 2a74db17b50025d13a63d947d8a8f828 : %ALLUSERSPROFILE%\Microsoft\DeviceSync\PrintSpoofer32.exe
– a9b21218f4d98f313a4195a388e3bfbb : C:\Windows\debug\WIA\PrintSpoofer928.exe, C:\Windows\debug\WIA\12.zxz, C:\Windows\debug\WIA\928.exe, %ALLUSERSPROFILE%\AhnLab\AIS\2.log, %ALLUSERSPROFILE%\USOShared\Logs\vmp2.log, %ALLUSERSPROFILE%\USOShared\2.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\PrintSpoofer928.exe, E:\****check_ASP_N\p.log

COMahawk (CVE-2019-1405, CVE-2019-1322)
– 6a60f718e1ecadd0e26893daa31c7120 : %SystemRoot%\debug\WIA\COMahawk64.exe

CVE-2020-0787
– d72412473d31ec655ea88833fe596902 : %SystemRoot%\debug\wia\cve-2020-0787-x64.exe

IIS LPE (by k8gege)
– 347742caff6fb0f8c397c0a772e29f3f : %SystemRoot%\debug\WIA\716.logs

Persistence
– aa3a20597084944fdcbe1c3894fd7ab5 : WebShell (SCF1.dat)
– bff58f5b6e3229d11b6ffe5b5ea952b5 : Config (SCFConfig.dat)
– 9cea04db9defe9e4f723c39a0ca76fb3 : Scheduled Batch (winrmr.cmd)

권한 복사 악성코드
– 95a0ea8e58195d1de2e66ca70ab05fe5 : %SystemDrive%\quarantine_mz\guest.exe
– 47ea1e6b805ba9c3f26a39035b3d35a0 : %SystemDrive%\quarantine_mz\folders\guestreg.exe

User Clone
– 0d341f48a589ef7d42283c0aa2575479 : %ALLUSERSPROFILE%\AhnLab\AIS\1.log, %ALLUSERSPROFILE%\Microsoft\DeviceSync\UserClone912.exe, %ALLUSERSPROFILE%\Microsoft\DeviceSync\UserClone.exe, C:\Windows\debug\WIA\UserClone.exe
– 5fd57ab455c62373e2151f7b46b183d2 : %ALLUSERSPROFILE%\Microsoft\DeviceSync\UserClone9111.exe
– 29ad1b38046f5af2fb715c21741e6878 : %ALLUSERSPROFILE%\Microsoft\DeviceSync\UserClone911.exe, C:\Windows\debug\WIA\UserClone911.exe

Mimikatz
– 3c051e76ba3f940293038a166763a190 : E:\****Hotel\mimikatz.exe, E:\****Hotel\m.gif, C:\Oracle\product\m.exe
– e387640e3f911b6b41aa669131fa55d4 : C:\Oracle\product\mz64_ms_all.log, %ALLUSERSPROFILE%\Microsoft\DeviceSync\mz64_ms_all.log
– 7353af8af2d7ce6c64018d9618161772 : C:\***\****lus\mz64_ms_all.exe, C:\Windows\debug\WIA\mz64_ms_all.exe

RunasCs
– 4d04fa35ed26b113bb13db90a7255352 : E:\****Hotel\app\runascs_net2.exe
– 09ab2d87eb4d3d8ea752cbe6add18fd2 : E:\****Hotel\app\Runas.exe
– 80f5d6191c8cc41864488e2d33962194 : C:\***pay50\sample\sample.html, C:\**Update\bin\Upddater.dll, C:\Windows\debug\WIA\dllhost.exe, C:\***das\FreeLibs\AspUpload\Clash.exe, C:\***\****lus\bin\kcp.dll, C:\***Pay40\source\Clash.exe, C\Windows\debug\WIA\wiatrace.log

Sy_Runas
– 5a163a737e027dbaf60093714c3a021f : e:\app\sy_runas_.exe, %SystemRoot%\system32\spool\drivers\color\d35.camp, %ALLUSERSPROFILE%\microsoft\devicesync\1.exe
– a49d10b6406a1d77a65aa0e0b05154c3 : %ALLUSERSPROFILE%\oracle\java\java.txt, %SystemRoot%\debug\wia\wiatrace.log, C:\Windows\debug\WIA\Sy_Runas.exe
– c7c00875da50df78c8c0efc5bedeaa87 : E:\****Hotel\app\sy_runasnew.exe, %ALLUSERSPROFILE%\usoshared\logs\user\notifyicon.000.etl, e:\win64_*****_client\client\stage\services.exe, e:\win64_*****_client\client\stage\setup.exe, e:\****hotel\app\s.exe, e:\****hotel\app\app.asp
– e77093c71dc26d0771164cdaa9740e49 : C:\Windows\debug\WIA\wiatrace.log

NetCat
– 5584853a1191ad601f1c86b461c171a7 : %SystemRoot%\debug\wia\nc1.exe, %SystemDrive%\oracle\product\nc1.exe
– e2b4163992da996ca063d329206a0309 : %SystemRoot%\debug\wia\nc.exe
– 523613a7b9dfa398cbd5ebd2dd0f4f38 : E:\****check_ASP_N\nc64.exe

Ladon (by k8gege)
– 2b399abe28dbe11ca928032bea30444a : %SystemRoot%\debug\WIA\Ladon911.exe
– 734c96f4def9de44aa6629df285654d9 : %SystemRoot%\debug\WIA\Ladon.exe
– 47d59e43e1485feb98ff9c84fc37dc3b : PowerLadon (메모리)

연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.

5 3 votes
별점 주기
Subscribe
Notify of
guest

4 댓글
Inline Feedbacks
View all comments
trackback

[…] researchers at AhnLab Security Emergency Response Center (ASEC) recently identified that threat actors are actively targeting the web servers and their services that are vulnerable, […]

trackback

[…] researchers at AhnLab Security Emergency Response Center (ASEC) recently identified that threat actors are actively targeting the web servers and their services that are vulnerable, […]

trackback

[…] researchers at AhnLab Security Emergency Response Center (ASEC) recently identified that threat actors are actively targeting the web servers and their services that are vulnerable, […]

trackback

[…] 과거 “국내 기업들의 웹 서비스를 대상으로 하는 APT 공격 사례 분석” [2] 사례에서도 […]