윈도우 서버를 공격해 악성코드 배포 서버로 사용하는 Lazarus 공격 그룹

AhnLab Security Emergency response Center(ASEC)은 국가 차원의 지원을 받는 공격 그룹으로 알려진 Lazarus 그룹이 윈도우 Internet Information Services(IIS) 웹 서버를 공격해 악성코드 배포 서버로 활용하고 있는 정황을 확인하였다.

Lazarus 그룹은 초기 침투 방식으로서 워터링 홀 기법을 사용하는 것으로 알려져 있다. [1] 먼저 국내 웹 사이트를 해킹하여 해당 사이트에서 제공되는 컨텐츠를 조작한다. 이후 취약한 버전의 INISAFE CrossWeb EX V6를 사용 중인 시스템에서 해당 사이트에 웹 브라우저로 접근할 경우 INISAFECrossWebEXSvc.exe의 취약점에 의해 악성코드 배포 사이트에서 Lazarus 악성코드(SCSKAppLink.dll)가 설치되는 방식이다.

INITECH 취약점은 이미 패치되었지만 패치되지 않은 시스템들을 대상으로 하는 취약점 공격은 최근까지도 이루어지고 있다. Lazarus 그룹은 IIS 웹 서버를 공격해 제어를 탈취한 이후 INITECH 취약점 공격에 사용되는 악성코드를 배포하는 목적의 서버로 사용하였다.

만약 취약한 버전의 INISAFE CrossWeb EX V3가 설치되어 있는 경우라면 다음 보안 업데이트 권고를 참고하여 제거 후 최신 업데이트를 진행해야 한다.


1. 윈도우 IIS 웹 서버 공격

Lazarus 공격 그룹이 IIS 서버를 공격하는 사례는 과거 2023년 5월 ASEC 블로그 “윈도우 IIS 웹 서버를 노리는 Lazarus 그룹”[2] 블로그에서 소개한 바 있다. 해당 공격 사례에서는 공격자가 부적절하게 관리되고 있거나 취약한 웹 서버를 최초 침투 경로로 사용한 것을 확인하였으며, 내부 정찰 단계 이후 RDP를 이용해 측면 이동을 시도한 정황까지 확인되었다.

일반적으로 공격자들은 스캐닝 결과 취약한 버전을 갖는 웹 서버가 확인되면 버전에 맞는 취약점을 이용해 웹쉘을 설치하거나 악성 명령을 실행한다. 공격자가 취약점을 이용해 악성 명령을 실행하거나 웹쉘을 이용해 파일 다운로드 / 업로드, 원격 명령 실행과 같은 행위를 할 경우 IIS 웹 서버 프로세스인 w3wp.exe에 의해 악성 행위가 수행된다.

이번에 확인된 공격에서는 이전 사례와 유사하게 w3wp.exe 즉 IIS 웹 서버 프로세스에 의해 Lazarus 공격 그룹의 악성코드가 생성된 사례가 확인된다.

Figure 1. IIS 웹 서버에 의해 생성되는 악성코드


2. JuicyPotato 권한 상승 악성코드 (usopriv.exe)

w3wp.exe 프로세스에 의해 생성된 악성코드 usopriv.exe는 Themida로 패킹된 JuicyPotato 악성코드이다. Potato 악성코드들은 권한 상승 기능을 담당하는 악성코드이며 권한 상승 방식에 따라 JuicyPotato, RottenPotato, SweetPotato 등 다양한 유형들이 존재한다.

Figure 2. 공격에 사용된 JuicyPotato

공격자들은 웹쉘이나 사전 공격을 통해 해당 프로세스를 제어할 수 있다고 하더라도 w3wp.exe 프로세스가 적절한 권한이 존재하지 않기 때문에 원하는 악성 행위를 수행할 수 없다. 이는 MS-SQL 서버의 sqlservr.exe 프로세스도 동일한데 이러한 문제를 해결하기 위해 공격자들은 공격 과정에서 권한 상승 악성코드들을 함께 사용하는 경향이 있다.

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

다음은 공격자가 감염 시스템에 설치한 JuicyPotato를 이용해 실행한 명령들의 목록이다. 권한 상승이 제대로 이루어졌는지를 확인하기 위해 whoami 명령을 사용하였으며, 실질적으로 악성 행위를 담당하는 Loader 악성코드를 실행한 로그도 함께 확인된다.

TimeLocationCommand
2023-6-28 11:35 AM%ALLUSERSPROFILE%\usopriv.exe%SystemRoot%\system32\cmd.exe /c whoami > c:\programdata
2023-6-29 7:48 AM%ALLUSERSPROFILE%\usopriv.exe%SystemRoot%\system32\cmd.exe /c whoami > c:\programdata
2023-6-29 7:51 AM%ALLUSERSPROFILE%\usopriv.exe%SystemRoot%\system32\cmd.exe /c whoami > c:\programdata\nueio.txt
2023-6-29 8:27 AM%ALLUSERSPROFILE%\usopriv.exe%SystemRoot%\system32\cmd.exe /c rundll32 c:\programdata\usoshared.dat ,usoprivfunc 4729858204985024133
2023-6-29 8:40 AM%ALLUSERSPROFILE%\usopriv.exe%SystemRoot%\system32\cmd.exe /c del c:\programdata\nueio.txt
2023-6-29 3:08 PM%USERPROFILE%\desktop\ngc\usopriv.exe%SystemRoot%\system32\cmd.exe /c whoami > c:\users\%ASD%\desktop\ngc\test.txt
Table 1. 권한 상승 악성코드를 통해 실행된 명령어 목록
Figure 3. 권한 상승 악성코드 실행 로그


3. Loader 악성코드 (usoshared.dat)

공격자는 JuicyPotato를 이용해 Loader 악성코드를 실행시켰다. Loader는 DLL 포맷이기 때문에 rundll32를 이용해 실행하였으며 랜덤한 문자열을 인자로 전달하였다.

> rundll32 c:\programdata\usoshared.dat ,usoprivfunc 4729858204985024133

Loader는 먼저 사용할 데이터 파일의 이름을 복호화하여 “{20D1BF68-64EE-489D-9229-95FEFE5F12A4}” 문자열을 구한다. 해당 문자열은 데이터 파일의 이름이며 모두 3개의 경로에서 해당 이름을 갖는 파일을 찾는다. 현재 해당 경로의 파일을 확보되지 못했지만 Loader 악성코드의 루틴을 통해 이 악성코드가 암호화된 데이터 파일을 복호화하여 메모리 상에서 실행시키는 Loader 악성코드라는 사실은 확인 가능하다.

  • rundll32.exe이 존재하는 폴더
  • usoshared.dat이 존재하는 폴더
  • C:\Windows\Installer\
Figure 4. 복호화된 데이터 파일 이름

만약 위의 경로에 {20D1BF68-64EE-489D-9229-95FEFE5F12A4} 파일이 존재할 경우에는 처음 3바이트를 읽어 “GIF” 문자열인지를 검사한다. 공격자는 데이터 파일을 GIF 그림 파일로 위장한 것으로 추정된다. 동일하다면 다음 4바이트를 읽는데 이는 다음부터 읽어들일 데이터의 사이즈이다.

Figure 5. 데이터 파일 검증 루틴

나머지 데이터는 다음과 같은 복호화 루틴을 통해 메모리 상에서 실행되기 때문에 암호화된 실제 PE로 추정된다. 처음에 구한 0xC00 이하의 데이터는 메모리 상에서 PE를 실행할 때 인자로 전달하기 때문에 복호화된 악성코드가 사용할 설정 데이터로 추정된다.

Figure 6. 복호화된 PE를 메모리 상에서 로드하는 루틴
OffsetSize데이터
0x00000x0003시그니처 (GIF)
0x00030x0004설정 데이터의 크기
0x0007SizeOfConfig암호화된 설정 데이터
0x0007 + SizeOfConfig나머지암호돠된 PE의 크기(0x04)와 암호화된 PE
Table 2. 암호화된 데이터 파일의 구조

일반적으로 Lazarus 그룹은 위와 같이 Loader 악성코드와 암호화된 데이터 파일을 함께 사용하는 경향이 있다. 위와 같이 PE 포맷인 Loader가 특정 경로에 위치한 암호화된 데이터 파일을 메모리 상에서 복호화한 후 실행하는 형태이다. 현재 데이터 파일은 확인되지 않지만 확인된 과거 사례들을 보면 최종적으로 실행되는 악성코드는 대부분 추가 악성코드를 다운로드하는 다운로더거나 공격자의 명령을 전달받아 악성 행위를 수행할 수 있는 백도어이다.


4. INISAFE 취약점 공격

자사 AhnLab Smart Defense(ASD) 로그에 따르면 패치되지 않은 과거 버전의 INISAFECrossWebEX를 사용 중인 시스템에 대한 INISAFE 취약점 공격은 지속적으로 진행되고 있다.

이후에도 공격자는 INISAFE 취약점 공격으로 감염 시스템에 추가 악성코드 “SCSKAppLink.dll”를 설치하려고 시도하였으며, “SCSKAppLink.dll”의 다운로드 주소가 위에서 다룬 IIS 웹 서버인 것이 확인되었다. 즉 공격자는 IIS 웹 서버를 공격해 제어를 탈취한 이후 악성코드를 배포하는 서버로 활용하였다.

Figure 7. INISAFE 취약점 발현 로그

해당 취약점을 통해 설치되는 악성코드 “SCSKAppLink.dll”는 확인되지 않았지만 과거 ASEC 블로그 “INITECH 프로세스를 악용하는 Lazarus 공격 그룹의 신종 악성코드”[3]와 유사할 것으로 보인다. 과거 확인된 “SCSKAppLink.dll”는 외부에서 추가 악성코드를 다운로드하고 실행하는 다운로더 악성코드였으며 시스템에 공격자가 지정한 악성코드를 설치해 제어를 탈취할 수 있다.


5. 결론

Lazarus 그룹은 초기 침투를 위해 공동 인증서 취약점3CX 공급망 공격 등 다양한 공격 벡터를 사용하며 매우 위협적이고 전 세계적으로 활발하게 활동하는 공격 그룹 중 하나이다. 따라서 기업 보안 담당자는 공격 표면 관리(Attack Surface Management)를 통해 공격자에게 노출될 수 있는 자산을 식별하고 지속적으로 최신 보안 패치 등 관리를 해야한다.

공격자는 최신 버전으로 패치되지 않은 시스템들을 대상으로 최근까지도 취약점 공격을 초기 침투에 사용하고 있다. 만약 최신 버전의 이니텍 제품을 사용하고 있지 않은 경우라면 다음 보안 업데이트 권고를 참고하여 최신 업데이트를 진행해야 한다.

또한 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다.

파일 진단
– Exploit/Win.JuicyPotato.C5452409 (2023.07.12.03)
– Trojan/Win.Loader.C5452411 (2023.07.12.03)

행위 진단
– InitialAccess/MDP.Event.M4242

IOC
MD5

– 280152dfeb6d3123789138c0a396f30d : JuicyPotato (usopriv.exe)
– d0572a2dd4da042f1c64b542e24549d9 : Loader (usoshared.dat)

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

Categories:악성코드 정보

Tagged as:,

4 4 votes
별점 주기
Subscribe
Notify of
guest

3 댓글
Inline Feedbacks
View all comments
trackback

[…] Security analysts urged users to remain vigilant and deploy an up-to-date patch management system. […]

trackback

[…] Security analysts urged users to remain vigilant and deploy an up-to-date patch management system. […]

trackback

[…] Security analysts urged users to remain vigilant and deploy an up-to-date patch management system. […]