22 - Pentesting SSH/SFTP

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Sawa la tuzo ya mdudu: jiandikishe kwa Intigriti, jukwaa la tuzo la mdudu la premium lililoundwa na wadukuzi, kwa wadukuzi! Jiunge nasi kwenye https://go.intigriti.com/hacktricks leo, na anza kupata tuzo hadi $100,000!

Taarifa Msingi

SSH (Secure Shell au Secure Socket Shell) ni itifaki ya mtandao ambayo inawezesha uhusiano salama kwa kompyuta juu ya mtandao usio salama. Ni muhimu kwa kudumisha usiri na uadilifu wa data wakati wa kufikia mifumo ya mbali.

Bandari ya chaguo: 22

22/tcp open  ssh     syn-ack

Seva za SSH:

  • openSSH – OpenBSD SSH, imeletwa katika BSD, usambazaji wa Linux na Windows tangu Windows 10

  • Dropbear – Utekelezaji wa SSH kwa mazingira yenye kumbukumbu na rasilimali za processor za chini, imeletwa katika OpenWrt

  • PuTTY – Utekelezaji wa SSH kwa Windows, mteja mara nyingi hutumika lakini matumizi ya seva ni nadra

  • CopSSH – utekelezaji wa OpenSSH kwa Windows

Maktaba za SSH (utekelezaji wa upande wa seva):

  • libssh – maktaba ya C ya multiplatform inayotekeleza itifaki ya SSHv2 na viunganisho katika Python, Perl na R; hutumiwa na KDE kwa sftp na na GitHub kwa miundombinu ya git SSH

  • wolfSSH – maktaba ya seva ya SSHv2 iliyoandikwa katika ANSI C na iliyolengwa kwa mifumo iliyowekwa, RTOS, na mazingira yenye rasilimali chache

  • Apache MINA SSHD – maktaba ya Java ya Apache SSHD inategemea Apache MINA

  • paramiko – maktaba ya itifaki ya Python SSHv2

Uchambuzi

Kukamata Bango

nc -vn <IP> 22

Ukaguzi wa ssh ulioautomatiki

ssh-audit ni chombo cha ukaguzi wa usanidi wa seva na mteja wa ssh.

https://github.com/jtesta/ssh-audit ni tawi lililosasishwa kutoka https://github.com/arthepsy/ssh-audit/

Vipengele:

  • Msaada wa seva za itifaki za SSH1 na SSH2;

  • uchambuzi wa usanidi wa mteja wa SSH;

  • kunasa bango, kutambua kifaa au programu na mfumo wa uendeshaji, kugundua uhaba;

  • kukusanya mabadilishano ya funguo, funguo la mwenyeji, algorithms za kuchanganya na nambari za uthibitishaji wa ujumbe;

  • kutolewa kwa habari za algorithm (inapatikana tangu lini, imeondolewa/kulemazwa, isiyo salama/dhaifu/ya zamani, nk);

  • kutoa mapendekezo ya algorithm (ongeza au ondoa kulingana na toleo la programu lililotambuliwa);

  • kutolewa kwa habari za usalama (masuala yanayohusiana, orodha ya CVE iliyotengwa, nk);

  • uchambuzi wa utangamano wa toleo la SSH kulingana na habari za algorithm;

  • habari ya kihistoria kutoka OpenSSH, Dropbear SSH na libssh;

  • inaendeshwa kwenye Linux na Windows;

  • hakuna tegemezi

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>

Angalia inavyofanya kazi (Asciinema)

Funguo ya Umma ya SSH ya seva

ssh-keyscan -t rsa <IP> -p <PORT>

Algorithmu za Ufunguo Dhaifu

Hii hufunuliwa kwa chaguo-msingi na nmap. Lakini unaweza pia kutumia sslcan au sslyze.

Vielelezo vya Nmap

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

Kuvunja nguvu majina ya mtumiaji, nywila na funguo za faragha

Uorodheshaji wa Majina ya Mtumiaji

Katika baadhi ya toleo za OpenSSH unaweza kufanya shambulio la wakati ili kuorodhesha watumiaji. Unaweza kutumia moduli ya metasploit ili kutumia hili:

msf> use scanner/ssh/ssh_enumusers

Baadhi ya siri za kawaida za ssh zinapatikana hapa na hapa na hapa chini.

Kujaribu Kwa Nguvu ya Funguo Binafsi

Ikiwa unajua baadhi ya funguo binafsi za ssh ambazo zinaweza kutumika... jaribu. Unaweza kutumia script ya nmap:

https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html

Au moduli wa ziada wa MSF:

msf> use scanner/ssh/ssh_identify_pubkeys

Au tumia ssh-keybrute.py (python3 ya asili, nyepesi na ina algorithms za zamani zimezimwa): snowdroppe/ssh-keybrute.

Vitufe vya SSH visivyofaa vinaweza kupatikana hapa:

Funguo dhaifu za SSH / Debian PRNG inayoweza kutabirika

Baadhi ya mifumo ina kasoro zinazojulikana katika mbegu ya nasibu iliyotumika kuzalisha vifaa vya kryptografia. Hii inaweza kusababisha nafasi ndogo ya funguo ambayo inaweza kuvunjwa kwa nguvu. Sets za funguo zilizotangenezwa mapema zilizozalishwa kwenye mifumo ya Debian zilizoathiriwa na PRNG dhaifu zinapatikana hapa: g0tmi1k/debian-ssh.

Unapaswa kutafuta hapa ili kutafuta funguo halali kwa mashine ya mwathiriwa.

Kerberos

crackmapexec ikitumia itifaki ya ssh inaweza kutumia chaguo --kerberos kwa uthibitisho kupitia kerberos. Kwa maelezo zaidi endesha crackmapexec ssh --help.

Sifa za Msingi

Muuzaji

Watumiaji

Nywila

APC

apc, kifaa

apc

Brocade

admin

admin123, password, brocade, fibranne

Cisco

admin, cisco, wezesha, hsa, pix, pnadmin, ripeop, root, shelladmin

admin, Admin123, default, password, secur4u, cisco, Cisco, _Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme

Citrix

root, nsroot, nsmaint, vdiadmin, kvm, cli, admin

C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler

D-Link

admin, mtumiaji

binafsi, admin, mtumiaji

Dell

root, mtumiaji1, admin, vkernel, cli

calvin, 123456, password, vkernel, Stor@ge!, admin

EMC

admin, root, sysadmin

EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc

HP/3Com

admin, root, vcx, app, spvar, manage, hpsupport, opc_op

admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin

Huawei

admin, root

123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123

IBM

USERID, admin, meneja, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, mfumo, kifaa, ufmcli, mteja

PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer

Juniper

netscreen

netscreen

NetApp

admin

netapp123

Oracle

root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user

changeme, ilom-admin, ilom-operator, welcome1, oracle

VMware

vi-admin, root, hqadmin, vmware, admin

vmware, vmw@re, hqadmin, default

SSH-MitM

Ikiwa uko kwenye mtandao wa ndani kama mwathiriwa ambaye atajiunga na seva ya SSH kwa kutumia jina la mtumiaji na nywila unaweza jaribu kufanya shambulio la MitM kuiba nywila hizo:

Njia ya Shambulio:

  • Uelekezaji wa Trafiki: Mshambuliaji anabadilisha trafiki ya mwathiriwa kwenye kompyuta yao, kimsingi kukamata jaribio la kuunganisha kwenye seva ya SSH.

  • Utekapaji na Kuingiza: Kompyuta ya mshambuliaji inafanya kazi kama proxy, kukamata maelezo ya kuingia ya mtumiaji kwa kujifanya kuwa seva halali ya SSH.

  • Utekelezaji wa Amri na Kupeleka: Hatimaye, seva ya mshambuliaji inarekodi nywila za mtumiaji, kupeleka amri kwa seva halisi ya SSH, kuzitekeleza, na kutuma matokeo kwa mtumiaji, hivyo kufanya mchakato uonekane wa kawaida na halali.

SSH MITM inafanya kile kilichoelezwa hapo juu.

Ili kuteka nywila halisi ya MitM unaweza kutumia mbinu kama ARP spoofing, DNS spoofing au zingine zilizoelezwa katika Shambulio za Udukuzi wa Mtandao.

SSH-Snake

Ikiwa unataka kupita kwenye mtandao ukitumia funguo za kibinafsi za SSH zilizogunduliwa kwenye mifumo, ukizingatia kila funguo la kibinafsi kwenye kila mfumo kwa mwenyeji mpya, basi SSH-Snake ndio unachohitaji.

SSH-Snake inatekeleza kiotomatiki na kwa njia ya kurudiarudia yafuatayo:

  1. Kwenye mfumo wa sasa, gundua funguo za kibinafsi za SSH yoyote,

  2. Kwenye mfumo wa sasa, gundua mwenyeji au marudio yoyote (mtumiaji@host) ambapo funguo za kibinafsi zinaweza kukubaliwa,

  3. Jaribu kujiunga na marudio yote kwa kutumia funguo zote za kibinafsi zilizogunduliwa,

  4. Ikiwa mwenyeji anajiunga kwa mafanikio, rudia hatua #1 - #4 kwenye mfumo uliojiunga.

Inajirekebisha na kujitapakaa kikamilifu - na haina faili kabisa.

Mipangilio Isiyofaa ya Mipangilio

Kuingia kama Root

Ni kawaida kwa seva za SSH kuruhusu kuingia kama mtumiaji wa root kwa chaguo-msingi, ambayo inaleta hatari kubwa ya usalama. Kuzima kuingia kama root ni hatua muhimu katika kusimamia usalama wa seva. Upatikanaji usiohalali na mashambulio ya nguvu yanaweza kudhibitiwa kwa kufanya mabadiliko haya.

Kuzima Kuingia kama Root katika OpenSSH:

  1. Hariri faili ya mazingira ya SSH kwa: sudoedit /etc/ssh/sshd_config

  2. Badilisha mipangilio kutoka #PermitRootLogin yes hadi PermitRootLogin no.

  3. Pakia upya mazingira kwa kutumia: sudo systemctl daemon-reload

  4. Anzisha upya seva ya SSH ili kutumia mabadiliko: sudo systemctl restart sshd

Shambulio la Nguvu la SFTP

Utekelezaji wa Amri ya SFTP

Kuna kosa la kawaida linalotokea na usanidi wa SFTP, ambapo wasimamizi wanakusudia watumiaji kubadilishana faili bila kuwezesha upatikanaji wa kabati la mbali. Licha ya kuweka watumiaji na kabati zisizo za mwingiliano (k.m., /usr/bin/nologin) na kuwazuia kwenye saraka maalum, pengo la usalama linabaki. Watumiaji wanaweza kuzunguka vizuizi hivi kwa kuomba utekelezaji wa amri (kama vile /bin/bash) mara tu baada ya kuingia, kabla ya kabati yao iliyopangwa ya kutofautiana kuchukua udhibiti. Hii inaruhusu utekelezaji usiohalali wa amri, ukidhoofisha hatua za usalama zilizokusudiwa.

Mfano kutoka hapa:

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

Hapa kuna mfano wa usanidi salama wa SFTP (/etc/ssh/sshd_config - openSSH) kwa mtumiaji noraj:

Match User noraj
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
PermitTTY no

Hii mipangilio itaruhusu tu SFTP: kwa kulemaza upatikanaji wa shell kwa kulazimisha amri ya kuanza na kulemaza upatikanaji wa TTY lakini pia kulemaza aina zote za kusonga mbele ya bandari au kuchimba.

Kuchimba kwa SFTP

Ikiwa una ufikiaji wa seva ya SFTP unaweza pia kuchimba trafiki yako kupitia hii kwa mfano kutumia kusonga mbele kwa bandari ya kawaida:

sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>

Sftp ina amri "symlink". Kwa hivyo, ikiwa una haki za kuandika kwenye folda fulani, unaweza kuunda symlinks za folda/picha nyingine. Kwa kuwa labda umekwama ndani ya chroot hii haitakuwa na manufaa maalum kwako, lakini, ikiwa unaweza kufikia symlink iliyoundwa kutoka kwa huduma isiyo na chroot (kwa mfano, ikiwa unaweza kufikia symlink kutoka kwenye wavuti), unaweza kufungua faili zilizolinganishwa kupitia wavuti.

Kwa mfano, kuunda symlink kutoka kwa faili mpya "froot" hadi "/":

sftp> symlink / froot

Mbinu za Uthibitishaji

Katika mazingira ya usalama wa juu, ni mazoea ya kawaida kuwezesha tu uthibitishaji wa msingi wa funguo au wa hatua mbili badala ya uthibitishaji wa msingi wa nywila. Lakini mara nyingi mbinu za uthibitishaji zenye nguvu hufunguliwa bila kuzima zile dhaifu. Kesi ya kawaida ni kuwezesha publickey kwenye usanidi wa openSSH na kuweka kama mbinu ya msingi lakini bila kuzima password. Kwa hivyo, kwa kutumia hali ya maelezo zaidi ya mteja wa SSH, mshambuliaji anaweza kuona kuwa mbinu dhaifu imewezeshwa:

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

Kwa mfano ikiwa kikomo cha kushindwa kwa uthibitishaji kimewekwa na hupati nafasi ya kufikia njia ya nenosiri, unaweza kutumia chaguo la PreferredAuthentications kufanya njia hii itumike.

ssh -v 192.168.1.94 -o PreferredAuthentications=password
...
debug1: Next authentication method: password

Ni muhimu kupitia upya usanidi wa seva ya SSH ili kuhakikisha kuwa njia zinazotarajiwa tu ndizo zilizoidhinishwa. Kutumia mode ya maelezo zaidi kwenye mteja kunaweza kusaidia kuona ufanisi wa usanidi.

Faili za Usanidi

ssh_config
sshd_config
authorized_keys
ssh_known_hosts
known_hosts
id_rsa

Fuzzing

Marejeo

Mwongozo wa tuzo ya mdudu: Jisajili kwa Intigriti, jukwaa la tuzo la mdudu la malipo lililoanzishwa na wadukuzi, kwa wadukuzi! Jiunge nasi kwenye https://go.intigriti.com/hacktricks leo, na anza kupata tuzo hadi $100,000!

Amri za Kiotomatiki za HackTricks

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'
Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated