관리 메뉴

Information Security

PrintNightmare 취약점 (CVE-2021-1675, CVE-2021-34527 ) 본문

CVE 취약점

PrintNightmare 취약점 (CVE-2021-1675, CVE-2021-34527 )

HackingPractice 2021. 9. 19. 18:51

PrintNightmare 취약점은 윈도우의 Print Spooler를 이용한 권한 상승 및 원격 코드 실행 취약점이다. Print Spooler는 윈도우 설치 시 기본적으로 설치되며, 컴퓨터가 부팅될 때 자동으로 실행되는 서비스다.

 

CVE-2021-1675는 권한 상승 취약점이고, 후에 발견된 CVE-2021-34527은 원격 코드 실행 취약점이다. 
CVE-2021-34527을 이용하여 시스템 권한 획득 후 일반 사용자의 권한을 상승시키거나, 새로운 계정을 생성하거나, 기밀정보 유출이 가능하며, 프로그램 설치 혹은 악성 파일을 업로드할 수 있다. 프린트를 사용할 때 필수적으로 사용되는 서비스이기 때문에 각별한 주의를 기울여야 한다.

 

 

S/W 구분 취약 버전
Windows Server 2008(R2 포함), 2012(R2 포함), 2016, 2019, 1909, 2004, 20H2
Windows  7, 8.1, RT 8.1, 10(1607, 1809, 1909, 2004, 20H2, 21H1)

 

역할 구분
공격자  Kali-Linux-2021.3 ( 192.168.157.137)
피해자 Windows Server 2016 (192.168.157.138)

 

취약점 테스트

Windows Server 2016 도메인 컨트롤러를 설치한다.

다음 누른 후 설치가 완료되면 "이 서버를 도메인 컨트롤러로 승격"을 선택한다.

루트 도메인 이름을 test.com 설정한다.

암호를 Passw@rd 설정해준다.

NetBIOS 도메인 이름이 TEST로 설정이 된다.

설치가 완료되면 다시 시작한다.

도메인 test.com으로 설정된 것을 알 수 있다.

도메인 컨트롤러 설치가 완료되어 hacking이라는 계정을 생성한다.

암호는 Passw@rd로 설정을 해준다.

net user 명령어를 통해 hacking 계정을 확인할 수 있다.

hacking 계정이 Domain Users라는 것을 알 수 있다.

PoC 코드가 저장된 URL은 다음과 같다. ( https://github.com/cube0x0/CVE-2021-1675)

PoC 코드를 아래와 같이 알 수 있다.

PoC 사용에 필요한 impacket 모듈을 다음 URL에서 다운로드한다. (https://github.com/SecureAuthCorp/impacket)

impacket 모듈 파일을 아래와 같이 알 수 있다.

기존에 설치되어 impacket 모듈을 삭제한다.

impacket 디렉터리에 있는 setup.py 파일을 설치한다.

설치가 완료되면 기존의 impacket 디렉터리 파일들이 다른 것을 알 수 있다.

impacket 디렉터리 안에 있는 examples 디렉터리로 이동한다.

rpcdump.py를 이용해 피해자의 PC MS-RPRN(인쇄 원격 프로토콜)이 동작하는 것을 알 수 있다.

Windows 인쇄 스풀러 원격 코드 실행 취약점(CVE-2021-1675)을 감지하는 스캐너를 다운로드한다. (https://github.com/cybersecurityworks553/CVE-2021-1675_PrintNightMare.git)

CVE-2021-1675_PrintNightMare 디렉터리 파일을 아래와 같이 알 수 있다.

detectprintnightmare.py를 이용해 스캐너를 하면 피해자의 PC가  취약하다는 것을 알 수 있다.

/etc/samba/smb.conf 설정 파일을 아래와 같이 설정해준다.

samba 프로세스를 활성화시킨 후 동작하는 것을 확인한다.

msfvenom을 이용하여 window에 삽입할 dll 파일(리버스 쉘)을 생성한다.

공유할 디렉터리에서 smbserver를 동작시킨다.

Window server 2016에서 \\192.168.157.137를 실행하면 공유 폴더에 rev.dll 파일이 존재하는 것을 알 수 있다

PoC 공격 코드의 사용법을 확인한다.

msfconsole을 이용하여 삽입한 dll이 연결될 포트를 열어준다.

PoC 공격 코드를 실행해준다. (※ 도메인컨트롤러/ID:PASSWORD@피해자IP ‘\\공격자IP\smb\삽입할dll')

리버스 쉘을 통해 세션이 연결된 것을 알 수 있다. IP 주소를 확인하면 Window Server 2016 IP 주소가 같다.

Window Server에 hacking.txt를 만들었다.

Window Server에서 아래와 같이 확인할 수 있다.

대응방안

서비스에서 Spooler를 중지시킨다.

다시 PoC 공격 코드를 실행하면 연결이 되지 않는 것을 알 수 있다.