Segun lo vi, me dije "que idea mas cojonuda como coj** no se me habia ocurrido antes!?"...
Así que dejé en lo ultimo que estoy, y me puse el mono de faena. Como soy mu vago pos como no?, script python....
Os lo dejo por si le sirve a alguien, pero me ha dao mal resultao.
Solo sirve para automatizar la descarga de todo el percal, y ni siquiera lo baja todo.
La verdad yo pensaba obtener shellcodes para internet explorer, firefox, etc... jajaj
Pero no, de todos, no hay... al menos los que he revisado... ningun shellcode tan directo tipo <html></html><htmaaaaahhhhbufferoverflowwwwww\xE9....
Lo que hay son ficheros descargables, la mayoria ejecutables directos... como si algun tonto lo fuera a descargar y ejecutar en su maquina
Y la verdad malware así no me llama la atención, porque el tiempo que tardo en analizarlo para sacar una buena idea, es el mismo que necesito para generar 2, no me compensa.
Lo que hace el script, pos es bajar el feed RSS de la web esa, y, uno por uno mandar peticion http a la web, y guardar la respuesta. Por si a alguno le resulta util(que lo dudo):
import feedparser
import datetime
from httplib import *
import os.path
class MalwareEntry:
def __init__(self, item_feed):
feed_title = item_feed['title']
[self.title, fecha_str] = feed_title.split()
self.fecha = datetime.datetime.strptime(fecha_str,'(%Y/%m/%d_%H:%M)')
description_xml = item_feed['description']
self.description = {}
for [i,j] in map(lambda x:x.split(':',1),description_xml.split(',',3)):
self.description[i.lstrip()] = j.lstrip()
self.guid = item_feed['id'].split('/')[-1]
def __str__(self):
s = self.title + str(self.fecha) + '\n'
s += str(self.description) + '\n'
s += self.guid
return s
def loadFeedEntries():
#feed_url = open('mdl.xml', 'rb').read() #
feed_url = 'http://www.malwaredomainlist.com/hostslist/mdl.xml'
feed = feedparser.parse(feed_url)
list_entries = []
for i in feed['items']:
m = MalwareEntry(i)
list_entries.append(m)
return list_entries;
def formatHeaders(headers):
str = ''
for (i, j) in headers:
str += i + ': ' + j + '\n'
return str
def simpleRequest(malware):
print malware.title
dir_name = str(malware.title).translate(None,':')
if not os.path.exists(dir_name):
os.mkdir(dir_name)
file = open(dir_name+'\\' + malware.guid + '.txt','wb')
headers = {
'Accept': 'image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*',
'Accept-Language': 'en',
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)',
'Accept-Encoding': 'gzip, deflate',
'Host': '',
'Connection': 'Keep-Alive'
}
if malware.description['Host'] == '-':
real_host = malware.description['IP address'].split('/')[0]
real_url = malware.description['IP address'].replace(real_host, '')
else:
real_host = malware.description['Host'].split('/')[0]
real_url = malware.description['Host'].replace(real_host, '')
headers['Host'] = real_host
try:
http = HTTPConnection(real_host, timeout=10)
http.request('GET', real_url, '', headers)
resp = http.getresponse()
http.close()
file.write(str(malware) +'\n')
file.write(formatHeaders(resp.getheaders()))
file.write(resp.read())
except:
pass
file.close()
def fileURL(url):
last = url.split('/')[-1]
if last.find('.') != -1:
return last
return None
def main():
malwares = loadFeedEntries()
for i in malwares:
if fileURL(i.description['Host']) or fileURL(i.description['IP address']):
simpleRequest(i)
main()
(necesita la libreria feedparser)
python http-exploit-leecher2.py (jaja, se lo que estais pensando, sí, pa ser tan cutre tiene otra version)
Con eso se pone a bajar todos los malwares hasta que termina, no se cuanto tarda, pero bastante.
Se pueden aprovechar bastante las funciones para hacer otras cosas. Que le falta?
-Pues que haga la descarga multihilo, para mas rapido
-Que busque shellcodes en webs(ya no se si ni siquiera existe esto). Esto podria hacerlo si no encouentra respuesta, que cambie para ello el user agent(iba a hacerlo pero recopilando los user agents me canse cuando ya llevaba un millar, y pense que quiza podia meterme en un lio si mando 10000 peticiones webs al mismo server, claro que se pueden reducir, solo que estaba haciendo una lista exhaustiva)
Ahora que recuerdo, puede que haya shellcodes en java... en alguna de esas creo que habia... no se
- Que descargue ficheros asociados a la respuesta, esa respuesta que te redirige a lo de descargar, eso causa que no baje ningun pdf que puede que sea de lo mas interesante. Sin esta funcion ya se que esto no vale nada
Bueno, solo eso que esperaba encontrarme con otra cosa y perdí el interés.
Otra cosa, debuguear malware, será fácil, pero exploits, como los analizais??, quiero decir, un pdf, como llegais al punto de entrada del exploit?... asi de pronto se me ocurre alguna forma pero no se, bp en ReadFile(en el acrobatreader) => bpr mem? luego de ahi, por la pila puedes sacar facilmente la zona donde se petó
Lo siento soy de poca paciencia
Alguna otra idea mas lucida merodeando por ahi?