El blog de Christian ..
interesado en la (in)seguridad informatica y de la informacion
25 nov 2014
Consultas WMI
Genérica
Set objWMIService = GetObject("winmgmts:\\" & host & "\root\cimv2")
Registro
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & host & "\root\default:StdRegProv")
Políticas
Set objRsop=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & host & "\root\rsop\computer")
Usuarios locales: "Select * from Win32_UserAccount Where LocalAccount = True"
Grupos locales: "Select * from Win32_Group Where LocalAccount = True"
Usuarios dentro de un grupo: SELECT * FROM Win32_GroupUser WHERE (groupcomponent = 'win32_group.name="Administrators",domain="MyHostName"')
Informacion de un User Profile: "Select * From Win32_UserProfile"
Servicios: "Select * from Win32_Service"
Shares: "Select * from Win32_Share"
Politicas
"select * from RSOP_SecuritySettingNumeric where precedence=1"
"Select * from RSOP_UserPrivilegeRight where precedence=1"
"Select * from RSOP_PolicySetting where precedence=1"
"Select * from RSOP_AuditPolicy where precedence=1"
26 ago 2014
MOOC de Seguridad de la Informacion y Gestion de Riesgos en Coursera
Hoy empiezan en Coursera (https://www.coursera.org/) estos 3 cursos en formatos MOOC (http://es.wikipedia.org/wiki/MOOC) que son impartidos por la Universidad de Washington:
- Building an Information Risk Management Toolkit: https://www.coursera.org/course/inforisk
- Designing and Executing Information Security Strategies: https://www.coursera.org/course/infosec
- Information Security and Risk Management in Context: https://www.coursera.org/course/inforiskman
El temario de los cursos se ve interesante, así que si tienen tiempo es una buena manera de mantenerse actualizado (y gratis).
Y para los que no podemos estar todo el día en la PC o laptop también se cuenta con la App de coursera en las tiendas de android y apple.
2 ago 2014
Obteniendo informacion desde un HTML con python
Un poco de código para extraer información mediante un script en python , algo básico, para empezar a familiarizarme con las librerías disponibles en Kali.
Las librerías usadas:
- urllib2 para descargar el código html de una pagina web
- beutifulsoup para extraer los enlaces que contiene
- urlparse para validar que los enlaces sean validos y extraer el hostname
- finalmente, la libreria dns para extraer la IP de los nombres de dominios obtenidos
url_extractor.py
# pylint: disable-msg=C0301 ''' apt-get install html5lib apt-get install python-beautifulsoup apt-get install python-lxml apt-get install python-pyquery http://yuji.wordpress.com/2008/05/14/python-basics-of-python-dictionary-and-looping-through-them/ http://stackoverflow.com/questions/493819/python-join-why-is-it-string-joinlist-instead-of-list-joinstring ''' from utils import utils def main(): ''' para que pylint no muestre tantos mensajes =) http://stackoverflow.com/questions/709490/python-code-convention-using-pylint ''' url = "www.google.com" html = utils.HtmlExtractor(url) #aseguramos que url siempre comienze por http:// o https:// url = html.get_url() #print html.get_body() data_extractor = utils.DataExtractor(html.get_body(), url, only_href = True) urls = data_extractor.get_urls() print "URLS: " for temp in urls: print temp domains = data_extractor.get_domains(urls) print "Dominios: " for temp in domains: print temp ips = data_extractor.get_ips_for_domains(domains) for key in ips.iterkeys(): print key, ": ", " ".join(ips[key]) if __name__ == "__main__": main()
utils/utils.py
''' http://docs.python.org/library/urlparse.html http://docs.python.org/tutorial/errors.html http://docs.python.org/library/urllib2.html http://docs.python.org/library/urllib2.html#urllib2.Request http://www.crummy.com/software/BeautifulSoup/documentation.html http://blog.elcodiguero.com/python/23-eliminar-duplicados-lista.html http://www.mail-archive.com/dnspython-users@dnspython.org/msg00006.html http://www.dnspython.org/examples.html http://docs.python.org/release/2.5.2/lib/typesmapping.html ''' from urlparse import urlparse import urllib2 import BeautifulSoup import dns.resolver def valida_url(url): ''' @param url: @type url: ''' #si la url no empieza por http temp https lo anexa al inicio if url[:7].lower() != "http://" or url[:8].lower() != "https://": url = "http://" + url #verificamos que es una url completa, es decir, contiene al hostname temp = urlparse(url) if temp.hostname is None: url = None return url # pylint: disable-msg=W0232 class _MyRedirects(urllib2.HTTPRedirectHandler): ''' Clase de redireccion ''' # pylint: disable-msg=C0301,R0913,C0111 def http_error_301(self, req, fpc, code, msg, headers): print code, " http_error_301 ", headers['Location'] return urllib2.HTTPRedirectHandler.http_error_301(self, req, fpc, code, msg, headers) # pylint: disable-msg=C0301,R0913,C0111 def http_error_302(self, req, fpc, code, msg, headers): print code, " http_error_302 ", headers['Location'] return urllib2.HTTPRedirectHandler.http_error_302(self, req, fpc, code, msg, headers) # pylint: disable-msg=C0301,R0913,C0111 def http_error_303(self, req, fpc, code, msg, headers): print code, " http_error_303 ", headers['Location'] return urllib2.HTTPRedirectHandler.http_error_303(self, req, fpc, code, msg, headers) # pylint: disable-msg=C0301,R0913,C0111 def http_error_307(self, req, fpc, code, msg, headers): print code, " http_error_304 ", headers['Location'] return urllib2.HTTPRedirectHandler.http_error_307(self, req, fpc, code, msg, headers) class HtmlExtractor(object): ''' Clase que extrae el codigo HTML de un origen. ''' def __init__(self, url): ''' @param url: URL completa, no acepta rutas relativas o absolutas @type url: string ''' self.follow_redirects = False self.html_body = None self.url = valida_url(url) if self.url is None: raise ValueError("URL No valida") def get_url(self): ''' retorna la url parseada, por ejemplo: para www.google.com.pe retorna http://www.google.com.pe ''' return self.url def get_body(self, follow_redirects = False): ''' Retorna el html resultante de la peticion. @param follow_redirects: En caso de estar seteado a verdadero, interpreta los mensajes HTTP 301, 302 @type follow_redirects: boolean ''' self.follow_redirects = follow_redirects request = urllib2.Request(self.url) opener = urllib2.build_opener(_MyRedirects()) content = opener.open(request) self.html_body = content.read() return self.html_body class DataExtractor(object): ''' Clase para extraer Datos de un html. url -- direccion desde la cual se extrajo el html, opcional si se desea que se interpreten las rutas relativas o absolutas que se puedan encontrar en el html only_href -- Solamente devuelve el contenido de los href, el texto entre las etiquetas no necesariamente puede coincidir con el valor ''' def __init__(self, html_body, url = None, only_href = False): self.html_body = html_body self.url = url self.only_href = only_href self.urls = [] self.domains = [] self.domain_ips = {} def get_urls(self): ''' devuelve todas las URL encontradas en el html analizado ''' result = BeautifulSoup.BeautifulSoup(self.html_body) lst_tag = result.findAll("a") for c_url in lst_tag: self.urls.append(c_url["href"]) return self.urls def get_domains(self, urls = None): ''' @param urls: Listado de urls a extraer los dominios, es la informacion devuelta por get_urls() @type urls: list ''' if urls is None: self.urls = self.get_urls() for url in urls: temp = urlparse(url) if temp.hostname is None: continue self.domains.append(temp.hostname) return dict.fromkeys(self.domains).keys() def get_ips_for_domains(self, domains = None): ''' @param domains: Listado de dominios a extraer los IP, es la informacion devuelta por get_domains() @type domains: list ''' if domains is None: self.domains = self.get_domains() for domain in domains: answer = dns.resolver.query(domain, 'A') temp = [] for rdata in answer: temp.append(rdata.address) self.domain_ips[domain] = temp return self.domain_ips
29 jul 2014
Mi entorno python en windows
Para mis pruebas de Hy (http://hy.readthedocs.org/en/latest/) y diversos scripts que normalmente ejecuto en Linux.
Usaré python 2.7, teniendo en cuenta hacer código migrable a python3, el porqué no usar python3 es debido a que algunas librerías no están migradas aún a python3.
Sistema base: windows 8.1 64 bits
Python (Seleccionar agregar python al PATH durante la instalación)
https://www.python.org/downloads/
Setup tools
Ejecutar PowerShell como administrador y ejecutar lo siguiente
Pip
Ejecutar PowerShell como administrador y ejecutar lo siguiente
PyWin32
Descargar la ultima versión disponible desde http://sourceforge.net/projects/pywin32/
PD: Instalarla como usuario estándar, cuando lo intente como administrador por algún motivo fallaba en windows 8.1
Agregar rutas al PATH en PowerShell
Pylint
python code static checker
Ipython
BeautifulSoup4
Para automatizar el analisis de código HTML
Hy
"Hy is a lisp dialect, but one that converts its structure into Python" =)
libdnet
No existe un instalador oficial para python 2.7 pero desde https://twitter.com/dloss/status/18457222544
dpkt
"fast, simple packet creation / parsing, with definitions for the basic TCP/IP protocols"
El texto menciona python 2.6 pero tambien sirve para 2.7
https://code.google.com/p/dpkt/downloads/detail?name=dpkt-1.7.win32.exe&can=2&q=
pypcap
"simplified object-oriented Python extension module for libpcap"
Tampoco tiene instalador oficial pero lo obtuve de aqui https://code.google.com/p/pypcap/issues/detail?id=36
scapy
http://www.secdev.org/projects/scapy/doc/installation.html
http://bb.secdev.org/scapy/downloads/scapy-2.2.0.zip
wireshark
instalar la version de 32 bits
www.wireshark.org
Pycrypto
http://www.voidspace.org.uk/python/modules.shtml#pycrypto
http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
dnspython
"dnspython is a DNS toolkit for Python. It supports almost all record types"
IDE:
Aptana Studio (Pydev)
http://www.aptana.com/products/studio3/download
Usaré python 2.7, teniendo en cuenta hacer código migrable a python3, el porqué no usar python3 es debido a que algunas librerías no están migradas aún a python3.
Sistema base: windows 8.1 64 bits
Python (Seleccionar agregar python al PATH durante la instalación)
https://www.python.org/downloads/
Setup tools
Ejecutar PowerShell como administrador y ejecutar lo siguiente
(Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
Pip
Ejecutar PowerShell como administrador y ejecutar lo siguiente
(Invoke-WebRequest https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py).Content | python -
PyWin32
Descargar la ultima versión disponible desde http://sourceforge.net/projects/pywin32/
PD: Instalarla como usuario estándar, cuando lo intente como administrador por algún motivo fallaba en windows 8.1
Agregar rutas al PATH en PowerShell
setx PATH "%PATH%;C:\Python27\Scripts"
Pylint
python code static checker
pip install pylint
Ipython
pip install ipython
BeautifulSoup4
Para automatizar el analisis de código HTML
pip install beautifulsoup4
Hy
"Hy is a lisp dialect, but one that converts its structure into Python" =)
pip install hy
libdnet
No existe un instalador oficial para python 2.7 pero desde https://twitter.com/dloss/status/18457222544
http://dirk-loss.de/scapy/dnet-1.12.win32-py2.7.exe
dpkt
"fast, simple packet creation / parsing, with definitions for the basic TCP/IP protocols"
El texto menciona python 2.6 pero tambien sirve para 2.7
https://code.google.com/p/dpkt/downloads/detail?name=dpkt-1.7.win32.exe&can=2&q=
pypcap
"simplified object-oriented Python extension module for libpcap"
Tampoco tiene instalador oficial pero lo obtuve de aqui https://code.google.com/p/pypcap/issues/detail?id=36
https://pypcap.googlecode.com/issues/attachment?aid=360000000&name=pcap-1.1.win32-py2.7.exe&token=ABZ6GAdluPCo_hMK4vnsnR7oKqP_Gjomow%3A1406650615796
scapy
http://www.secdev.org/projects/scapy/doc/installation.html
http://bb.secdev.org/scapy/downloads/scapy-2.2.0.zip
wireshark
instalar la version de 32 bits
www.wireshark.org
Pycrypto
http://www.voidspace.org.uk/python/modules.shtml#pycrypto
http://www.voidspace.org.uk/downloads/pycrypto26/pycrypto-2.6.win32-py2.7.exe
dnspython
"dnspython is a DNS toolkit for Python. It supports almost all record types"
pip install dnspython
IDE:
Aptana Studio (Pydev)
http://www.aptana.com/products/studio3/download
Suscribirse a:
Entradas (Atom)