Estoy escribiendo un módulo de explotación posterior que admite sesiones de meterpreter.
Para que mi módulo funcione, necesito leer / descargar algunos archivos de la máquina víctima que pueden ser pequeños o más grandes. Estoy teniendo problemas cuando el archivo es más grande que 2MB. Comienzo a obtener todo tipo de excepciones cuando intento el método read_file o cuando intento descargar el archivo con client.fs.file.download
He aislado el problema a esto después de horas de pruebas. Simplemente sucede con archivos más grandes. ¿Hay algún tipo de límite sobre cómo de grandes pueden ser los archivos? Si es así, ¿cómo puedo solucionarlo para poder leer / descargar archivos de la máquina de las víctimas?
Recibo errores diferentes sin ningún patrón específico. El más común se refleja en este seguimiento de pila:
[-] Error en la publicación: TypeError no puede convertir nil en String
[-] Pila de llamadas:
[-] /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 '
Ocurre cuando intento leer una base de datos sqlite en la máquina de las víctimas. Específicamente en línea:
data = read_file (db_path)
El otro error que he visto es el siguiente:
[-] Publicación fallida: SocketError getaddrinfo: Nombre o servicio desconocido
[-] Pila de llamadas:
[-] /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
block in run '
[-] /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'
Este pasa en la línea: loot_path = store_loot (...)
Los diferentes errores se activan cuando ejecuto más de 3 veces esta línea: files = client.fs.dir.entries (ruta)
De alguna manera, la sesión de meterpreter se corrompe después de que el bucle ejecuta la línea anterior por cuarta vez o más.