I miei due centesimi:
Esegui bash (o altri shell ) prima !!
La rapidità della lingua non ha importanza quando sei in pieno brainstorm !
Uno dei linguaggi più utili e potenti per questo tipo di operazione sembra essere dimenticato nella tua domanda.
Vorrei parlare di bash come ambiente di hacking . Sì shell prendono il suo nome dalla shell che può contenere molte altre cose.
Sotto Un * x, si accede principalmente a una shell console, per poter eseguire altri strumenti.
Se è uno dei più lenti lingua :
$ time for ((i=1000000;i--;));do :;done
real 0m4.755s
user 0m4.628s
sys 0m0.124s
time perl -e 'map{1}(0..1000000)'
real 0m0.199s
user 0m0.112s
sys 0m0.060s
$ time python -c 'for a in range(1000000): 1==1
real 0m0.119s
user 0m0.096s
sys 0m0.020s
Sì! Più di 4 secondi per un ciclo step di 1 milione è molto lento, ma una volta effettuato l'accesso a una console della riga di comando ...
Vantaggio principale da considerare:
-
cronologia Puoi salvare / copiare la cronologia per poterli consultare in seguito o per creare uno script
-
log utilizzando strumenti come
script
e scriptreplay
puoi conservare una traccia molto precisa di tutto il tuo lavoro
-
Cut'n paste Usando x-terminal o strumenti come
screen
, puoi giocare con attività parallele, su console separate e condividere input / output tra tutti loro.
-
fifo Unendo strumenti semplici ma potenti come
nc
| sed
| ssh
| python
...
Esempio pratico
da cui puoi iniziare:
$ mkdir /tmp/hackingGoogle
$ cd $_
di
$ nc google.com 80 <<<$'HEAD /fonts/ HTTP/1.0\r\n\r'
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
...
Da lì, puoi utilizzare tutti gli strumenti che desideri, come ping
, traceroute
, openssl
, nmap
, ecc ...
$ openssl s_client -connect google.com:443 -ign_eof \
<<< $'HEAD / HTTP/1.0\r\n\r' 2>&1 | \
openssl x509 -in /dev/stdin -out certfile
$ openssl x509 -in certfile -noout -fingerprint
SHA1 Fingerprint=67:1B:98:92:48:86:FF:E1:C5:02:44:C5:9F:F3:96:78:08:F5:0A:45
$ openssl x509 -in certfile -noout -subject
subject= /C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com
Se sei interessato a SSL, qualche altro script di esempio
o ...
$ wget https://www.google.com/fonts/
$ vi index.html
$ wget https://www.google.com/fonts/webfonts.nocache.js
$ smjs < <(sed < webfonts.nocache.js 's/Window....')
...
per giocare con javascript ...
Ambiente utile per la memorizzazione delle variabili:
$ ip=();ANS=false;while read -a line;do if [[ "$line" = ";;" ]];then [[
"${line[1]}" = "ANSWER" ]] && ANS=true || ANS=false; fi ; $ANS && [[
"${line[2]}" == "IN" ]] && ip+=(${line[4]});done < <(dig www.google.com)
$ printf "%s\n" ${ip[@]}
173.194.116.51
173.194.116.52
173.194.116.48
173.194.116.49
173.194.116.50
A seconda di ciò che stai cercando, puoi utilizzare ampiamente tutti i tuoi strumenti in tutte le combinazioni.
$ grep ^64 < <(for host in ${ip[@]};do ping -c2 $host&done;wait)|sort -t. -nk4
64 bytes from 173.194.113.112: icmp_req=1 ttl=54 time=45.4 ms
64 bytes from 173.194.113.112: icmp_req=2 ttl=54 time=47.8 ms
64 bytes from 173.194.113.113: icmp_req=1 ttl=54 time=41.4 ms
64 bytes from 173.194.113.113: icmp_req=2 ttl=54 time=40.2 ms
64 bytes from 173.194.113.114: icmp_req=1 ttl=54 time=43.1 ms
64 bytes from 173.194.113.114: icmp_req=2 ttl=54 time=39.0 ms
64 bytes from 173.194.113.115: icmp_req=1 ttl=54 time=47.0 ms
64 bytes from 173.194.113.115: icmp_req=2 ttl=54 time=42.1 ms
64 bytes from 173.194.113.116: icmp_req=1 ttl=54 time=43.9 ms
64 bytes from 173.194.113.116: icmp_req=2 ttl=54 time=39.0 ms
Ciò potrebbe essere riscritto :
Mini script da lì:
Con questo, effettuerai due ping, parallelizzati (questo richiederà normalmente solo 1 secondo) su ~ 5 host:
ip=()
ANS=false
while read -a line;do
if [[ "$line" = ";;" ]] ;then
[[ "${line[1]}" = "ANSWER" ]] && ANS=true || ANS=false
fi
$ANS && [[ "${line[2]}" == "IN" ]] &&
ip+=(${line[4]})
done < <(dig www.google.com)
grep ^64 < <(
for host in ${ip[@]};do
ping -c2 $host &
done
wait
) |
sort -t. -nk4
Altre lingue (più efficienti)
Una volta risolto l'obiettivo, dopo un sacco di brainf @ # @ ing , il hacker comune eseguirà il suo editor preferito e memorizzerà il suo exploit come script per automatizzare la prossima esecuzione.
La scelta della lingua utilizzata dipenderà principalmente dalle preferenze dell'hacker. (Se non richiesto dal suo capo.)
E prima di reinventare la ruota ...
Esiste già un sacco di strumenti dedicati al pentesting, alla scansione, alla ricerca e all'analisi. Se utilizzi debian puoi dare un'occhiata a Debian Forensics Environment ...
Ad ogni modo, il miglior ambiente per testare e registrare ogni passo da questo tipo di lavoro è un shell (come bash ; -)