Sto scrivendo un modulo di post-exploitation che supporta sessioni meterpreter.
Affinché il mio modulo funzioni, devo leggere / scaricare alcuni file dalla macchina della vittima che possono essere piccoli o più grandi. Sto avendo problemi quando il file è più grande di 2 MB. Inizio a ottenere tutti i tipi di eccezioni quando provo il metodo read_file o quando provo a scaricare il file con client.fs.file.download
Ho isolato il problema a questo dopo ore di test. Succede solo con file più grandi. C'è una sorta di limite su come possono essere grandi i file? In tal caso, come posso aggirare il problema in modo da poter leggere / scaricare i file dalla macchina delle vittime?
Ottengo errori diversi senza alcun modello specifico. Il più comune si riflette in questo stacktrace:
[-] Post failed: TypeError non può convertire nil in String
[-] Stack di chiamate:
[-] /home/yowie/git/metasploit-framework/lib/msf/core/post/file.rb:343:in _read_file_meterpreter'
[-] /home/yowie/git/metasploit-framework/lib/msf/core/post/file.rb:227:in
read_file '
[-] /home/yowie/git/metasploit-framework/modules/post/multi/gather/lastpass_creds.rb:43:in block in run'
[-] /home/yowie/git/metasploit-framework/modules/post/multi/gather/lastpass_creds.rb:39:in
each '
[-] /home/yowie/git/metasploit-framework/modules/post/multi/gather/lastpass_creds.rb:39:in each_with_index'
[-] /home/yowie/git/metasploit-framework/modules/post/multi/gather/lastpass_creds.rb:39:in
run '
Succede quando provo a leggere un database SQLite nella macchina delle vittime. Specificamente in linea:
data = read_file (db_path)
L'altro errore che ho visto è il seguente:
[-] Post failed: SocketError getaddrinfo: Nome o servizio non noto
[-] Stack di chiamate:
[-] /home/yowie/git/metasploit-framework/lib/rex/socket.rb:181:in gethostbyname'
[-] /home/yowie/git/metasploit-framework/lib/rex/socket.rb:181:in
getaddresses '
[-] /home/yowie/git/metasploit-framework/lib/rex/socket.rb:165:in getaddress'
[-] /home/yowie/git/metasploit-framework/lib/msf/core/db.rb:6096:in
normalize_host '
[-] /home/yowie/git/metasploit-framework/lib/msf/core/auxiliary/report.rb:222:in store_loot'
[-] /home/yowie/git/metasploit-framework/modules/post/multi/gather/lastpass_creds.rb:51:in
blocco in esecuzione '
[-] /home/yowie/git/metasploit-framework/modules/post/multi/gather/lastpass_creds.rb:46:in each'
[-] /home/yowie/git/metasploit-framework/modules/post/multi/gather/lastpass_creds.rb:46:in
each_with_index '
[-] /home/yowie/git/metasploit-framework/modules/post/multi/gather/lastpass_creds.rb:46:in 'run'
Questo succede nella linea: loot_path = store_loot (...)
I diversi errori vengono attivati quando eseguo più di 3 volte questa riga: files = client.fs.dir.entries (percorso)
In qualche modo la sessione meterpreter si corrompe dopo che il ciclo esegue la riga precedente per la quarta o più volte.