22 KiB
22 - Pentesting SSH/SFTP
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PRs in te dien by die HackTricks en HackTricks Cloud github-opslag.
Bug bounty wenk: teken aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings tot $100,000 te verdien!
{% embed url="https://go.intigriti.com/hacktricks" %}
Basiese Inligting
SSH (Secure Shell of Secure Socket Shell) is 'n netwerkprotokol wat 'n veilige verbinding met 'n rekenaar oor 'n onveilige netwerk moontlik maak. Dit is noodsaaklik vir die handhawing van die vertroulikheid en integriteit van data wanneer toegang tot afgeleë stelsels verkry word.
Verstekpoort: 22
22/tcp open ssh syn-ack
SSH bedieners:
- openSSH – OpenBSD SSH, versend in BSD, Linux verspreidings en Windows sedert Windows 10
- Dropbear – SSH implementering vir omgewings met lae geheue en verwerkerhulpbronne, versend in OpenWrt
- PuTTY – SSH implementering vir Windows, die klient word algemeen gebruik maar die gebruik van die bediener is skaars
- CopSSH – implementering van OpenSSH vir Windows
SSH biblioteke (implementering van bedienerkant):
- libssh – multiplatform C-biblioteek wat die SSHv2-protokol implementeer met bindings in Python, Perl en R; dit word deur KDE gebruik vir sftp en deur GitHub vir die git SSH-infrastruktuur
- wolfSSH – SSHv2-bedienerbiblioteek geskryf in ANSI C en gemik op ingebedde, RTOS, en hulpbronbeperkte omgewings
- Apache MINA SSHD – Apache SSHD java-biblioteek is gebaseer op Apache MINA
- paramiko – Python SSHv2-protokolbiblioteek
Opname
Banner Gaping
nc -vn <IP> 22
Geoutomatiseerde ssh-audit
ssh-audit is 'n gereedskap vir die ouditering van ssh-bediener- en klientkonfigurasie.
https://github.com/jtesta/ssh-audit is 'n opgedateerde aftakking van https://github.com/arthepsy/ssh-audit/
Kenmerke:
- SSH1 en SSH2 protokolbediener-ondersteuning;
- analiseer SSH-klientkonfigurasie;
- gryp banier, herken toestel of sagteware en bedryfstelsel, ontdek kompressie;
- versamel sleuteluitruil, gasheer-sleutel, enkripsie en boodskap-verifikasiekode-algoritmes;
- uitvoer algoritme-inligting (beskikbaar sedert, verwyder/afgeskakel, onveilig/swak/oud, ens.);
- uitvoer algoritme-aanbevelings (voeg by of verwyder gebaseer op herkenning van sagteware-weergawe);
- uitvoer van sekuriteitsinligting (verwante kwessies, toegewysde CVE-lys, ens.);
- analiseer SSH-weergawe-verenigbaarheid gebaseer op algoritme-inligting;
- historiese inligting van OpenSSH, Dropbear SSH en libssh;
- hardloop op Linux en Windows;
- geen afhanklikhede
usage: ssh-audit.py [-1246pbcnjvlt] <host>
-1, --ssh1 force ssh version 1 only
-2, --ssh2 force ssh version 2 only
-4, --ipv4 enable IPv4 (order of precedence)
-6, --ipv6 enable IPv6 (order of precedence)
-p, --port=<port> port to connect
-b, --batch batch output
-c, --client-audit starts a server on port 2222 to audit client
software config (use -p to change port;
use -t to change timeout)
-n, --no-colors disable colors
-j, --json JSON output
-v, --verbose verbose output
-l, --level=<level> minimum output level (info|warn|fail)
-t, --timeout=<secs> timeout (in seconds) for connection and reading
(default: 5)
$ python3 ssh-audit <IP>
Openbare SSH-sleutel van bediener
ssh-keyscan -t rsa <IP> -p <PORT>
Swakke Sifer Algoritmes
Dit word standaard ontdek deur nmap. Maar jy kan ook sslcan of sslyze gebruik.
nmap -p22 <ip> -sC # Send default nmap scripts for SSH
nmap -p22 <ip> -sV # Retrieve version
nmap -p22 <ip> --script ssh2-enum-algos # Retrieve supported algorythms
nmap -p22 <ip> --script ssh-hostkey --script-args ssh_hostkey=full # Retrieve weak keys
nmap -p22 <ip> --script ssh-auth-methods --script-args="ssh.user=root" # Check authentication methods
Shodan
ssh
Brute force gebruikersname, wagwoorde en private sleutels
Gebruikersnaamopnoeming
In sommige weergawes van OpenSSH kan jy 'n tydaanval maak om gebruikers te ontsluit. Jy kan 'n metasploit-module gebruik om dit uit te buit:
msf> use scanner/ssh/ssh_enumusers
Brute force
Sommige algemene ssh-inligting hier en hier en hieronder.
Privaatsleutel Brute Force
As jy van sommige ssh-privaatsleutels weet wat gebruik kan word... probeer dit. Jy kan die nmap-skrip gebruik:
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
Of die MSF bykomende module:
msf> use scanner/ssh/ssh_identify_pubkeys
Of gebruik ssh-keybrute.py
(nativese python3, lig en het erfenis algoritmes geaktiveer): snowdroppe/ssh-keybrute.
Bekende slegte sleutels kan hier gevind word:
{% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %}
Swak SSH sleutels / Debian voorspelbare PRNG
Sommige stelsels het bekende foute in die lukrake saad wat gebruik word om kriptografiese materiaal te genereer. Dit kan lei tot 'n dramaties verminderde sleutelruimte wat gekraak kan word. Vooraf gegenereerde stelle sleutels wat gegenereer is op Debian stelsels wat geraak is deur swak PRNG is beskikbaar hier: g0tmi1k/debian-ssh.
Jy moet hier kyk om te soek na geldige sleutels vir die slagoffer se masjien.
Kerberos
crackmapexec wat die ssh
protokol gebruik kan die opsie --kerberos
gebruik om te authentiseer via kerberos.
Vir meer inligting hardloop crackmapexec ssh --help
.
Standaard Gelde
Vervaardiger | Gebruikersname | Wagwoorde |
---|---|---|
APC | apc, toestel | apc |
Brocade | admin | admin123, wagwoord, brocade, fibranne |
Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, verstek, wagwoord, secur4u, cisco, Cisco, _Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, verander_dit, 12345, ipics, pnadmin, diamond, hsadb, c, cc, aanval, blender, verandermy |
Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, openbaar, rootadmin, wanscaler |
D-Link | admin, gebruiker | privaat, admin, gebruiker |
Dell | root, user1, admin, vkernel, cli | calvin, 123456, wagwoord, vkernel, Stor@ge!, admin |
EMC | admin, root, sysadmin | EMCPMAdm7n, Wagwoord#1, Wagwoord123#, sysadmin, verandermy, emc |
HP/3Com | admin, root, vcx, app, spvar, bestuur, hpsupport, opc_op | admin, wagwoord, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, toegang, opstelling, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !bestuur, !admin |
Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
IBM | USERID, admin, bestuurder, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, stelsel, toestel, ufmcli, kliënt | PASSW0RD, passw0rd, admin, wagwoord, Passw8rd, iadmin, apc, 123456, kliënt |
Juniper | netscreen | netscreen |
NetApp | admin | netapp123 |
Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | verandermy, ilom-admin, ilom-operator, welcome1, oracle |
VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, verstek |
SSH-MitM
As jy in die plaaslike netwerk is as die slagoffer wat gaan koppel aan die SSH-bediener deur gebruikersnaam en wagwoord kan jy probeer om 'n MitM-aanval uit te voer om daardie gelde te steel:
Aanvalpad:
- Verkeersomleiding: Die aanvaller stuur die slagoffer se verkeer na hul masjien, wat effektief die koppelingspoging na die SSH-bediener onderskep.
- Onderskepping en Loggin: Die aanvaller se masjien tree op as 'n proksi, vang die gebruiker se aanmeldingsbesonderhede deur voor te gee as die regmatige SSH-bediener.
- Opdraguitvoering en Deurbestuur: Laastens, die aanvaller se bediener log die gebruiker se gelde, stuur die opdragte na die regte SSH-bediener, voer dit uit, en stuur die resultate terug na die gebruiker, wat die proses laat voorkom asof dit naatloos en regmatig is.
SSH MITM doen presies wat hierbo beskryf is.
Om die werklike MitM uit te voer kan jy tegnieke soos ARP-spoofing, DNS-spoofing of ander gebruik wat beskryf word in die Netwerkspoofing-aanvalle.
SSH-Slang
As jy 'n netwerk wil deursoek met ontdekte SSH privaat sleutels op stelsels, wat elke privaat sleutel op elke stelsel gebruik vir nuwe gasheer, dan is SSH-Slang wat jy nodig het.
SSH-Slang voer die volgende take outomaties en herhalend uit:
- Op die huidige stelsel, vind enige SSH privaat sleutels,
- Op die huidige stelsel, vind enige gasheer of bestemmings (gebruiker@gasheer) wat die privaat sleutels mag aanvaar,
- Probeer om na al die bestemmings te SSH met al die ontdekte privaat sleutels,
- As 'n bestemming suksesvol gekoppel word, herhaal stappe #1 - #4 op die gekoppelde stelsel.
Dit is heeltemal selfvermeerderend en selfverspreidend -- en heeltemal sonder lêers.
Konfigurasie Foute
Root aanmelding
Dit is algemeen vir SSH-bediener om standaard rootgebruiker aanmelding toe te laat, wat 'n beduidende sekuriteitsrisiko inhou. Deaktivering van root aanmelding is 'n kritieke stap in die beveiliging van die bediener. Onbevoegde toegang met administratiewe regte en brutale aanvalle kan geminimaliseer word deur hierdie verandering te maak.
Om Root Aanmelding in OpenSSH te Deaktiveer:
- Wysig die SSH konfigurasie lêer met:
sudoedit /etc/ssh/sshd_config
- Verander die instelling van
#PermitRootLogin yes
naPermitRootLogin no
. - Herlaai die konfigurasie met:
sudo systemctl daemon-herlaai
- Herlaai die SSH-bediener om veranderinge toe te pas:
sudo systemctl herlaai sshd
SFTP Brutale Aanval
SFTP opdraguitvoering
Daar is 'n algemene oorsig met SFTP-opstelle, waar administrateurs beoog dat gebruikers lêers kan uitruil sonder om afgeleë skeltoegang in te skakel. Ten spyte van die instelling van gebruikers met nie-interaktiewe skille (bv., /usr/bin/nologin
) en hulle beperk tot 'n spesifieke gids, bly 'n sekuriteitsloophole. Gebruikers kan hierdie beperkings omseil deur die uitvoering van 'n opdrag aan te vra (soos /bin/bash
) onmiddellik na aanmelding, voordat hulle aangewese nie-interaktiewe skel oorneem. Dit maak onbevoegde opdraguitvoering moontlik, wat die bedoelde sekuriteitsmaatreëls ondermyn.
ssh -v noraj@192.168.1.94 id
...
Password:
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to 192.168.1.94 ([192.168.1.94]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Sending command: id
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
uid=1000(noraj) gid=100(users) groups=100(users)
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2412, received 2480 bytes, in 0.1 seconds
Bytes per second: sent 43133.4, received 44349.5
debug1: Exit status 0
$ ssh noraj@192.168.1.94 /bin/bash
Hier is 'n voorbeeld van 'n veilige SFTP-konfigurasie (/etc/ssh/sshd_config
- openSSH) vir die gebruiker noraj
:
Match User noraj
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
PermitTTY no
Hierdie konfigurasie sal slegs SFTP toelaat: deaktiveer skel-toegang deur die beginopdrag te forseer en deaktiveer TTY-toegang, maar ook alle soorte poort deurvoer of tonneling te deaktiveer.
SFTP Tonneling
As jy toegang het tot 'n SFTP-bediener, kan jy ook jou verkeer deur hierdie tonnel, byvoorbeeld deur die algemene poort deurvoering, lei:
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
SFTP Symlink
Die sftp het die opdrag "symlink". Daarom, as jy skryfregte in 'n sekere gids het, kan jy symlinks van ander gidsies/lêers skep. Aangesien jy waarskynlik vasgevang is binne 'n chroot, sal dit nie besonders nuttig vir jou wees nie, maar as jy die geskepte symlink van 'n geen-chroot diens kan bereik (byvoorbeeld, as jy die symlink van die web kan bereik), kan jy die symlinked lêers deur die web oopmaak.
Byvoorbeeld, om 'n symlink van 'n nuwe lêer "froot" na "/**" te skep:
sftp> symlink / froot
Indien jy die lêer "froot" via die web kan bereik, sal jy in staat wees om die hoof ("/") vouer van die stelsel te lys.
Verifikasiemetodes
In 'n hoë sekuriteitsomgewing is dit 'n algemene praktyk om slegs sleutelgebaseerde of tweefaktor-verifikasie moontlik te maak eerder as die eenvoudige faktor wagwoordgebaseerde verifikasie. Maar dikwels word die sterker verifikasiemetodes moontlik gemaak sonder om die swakkeres uit te skakel. 'n Gereelde geval is om publickey
in die openSSH-konfigurasie moontlik te maak en dit as die verstekmetode in te stel, maar om nie password
uit te skakel nie. Dus kan 'n aanvaller deur die oordrewe modus van die SSH-klient te gebruik, sien dat 'n swakker metode moontlik gemaak is:
ssh -v 192.168.1.94
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
Byvoorbeeld, as 'n verifikasie-mislukkingslimiet ingestel is en jy nooit die kans kry om die wagwoordmetode te bereik nie, kan jy die PreferredAuthentications
-opsie gebruik om te dwing om hierdie metode te gebruik.
ssh -v 192.168.1.94 -o PreferredAuthentications=password
...
debug1: Next authentication method: password
Konfigurasie lêers
ssh_config
sshd_config
authorized_keys
ssh_known_hosts
known_hosts
id_rsa
Fuzzing
- https://packetstormsecurity.com/files/download/71252/sshfuzz.txt
- https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2
Verwysings
- Jy kan interessante gidse vind oor hoe om SSH te versterk by https://www.ssh-audit.com/hardening_guides.html
- https://community.turgensec.com/ssh-hacking-guide
Bug bounty wenk: teken aan vir Intigriti, 'n premium bug bounty platform geskep deur hackers, vir hackers! Sluit by ons aan by https://go.intigriti.com/hacktricks vandag, en begin om belonings te verdien tot $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
HackTricks Outomatiese Opdragte
Protocol_Name: SSH
Port_Number: 22
Protocol_Description: Secure Shell Hardening
Entry_1:
Name: Hydra Brute Force
Description: Need Username
Command: hydra -v -V -u -l {Username} -P {Big_Passwordlist} -t 1 {IP} ssh
Entry_2:
Name: consolesless mfs enumeration
Description: SSH enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use scanner/ssh/ssh_enumusers; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ssh/juniper_backdoor; set RHOSTS {IP}; set RPORT 22; run; exit'
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy jou maatskappy geadverteer wil sien in HackTricks of HackTricks in PDF wil aflaai Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS-familie, ons versameling eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @carlospolopm.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.