SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
FOCA API v0.1
Creación de un plugin básico
Debemos crear un nuevo proyecto de tipo ‘Class Library’ para la generación de una DLL
compilada.
El proyecto debe estar desarrollado sobre el Framework .NET 3.5 o inferior y la plataforma
sobre la que se debe compilar es para ‘Any CPU’. Esto es accesible desde las ‘propiedades del
proyecto / Build / Platform target’.
Una vez el proyecto esté creado será necesario agregar como referencia la DLL de la API de
FOCA (PluginsAPI.dll). Esto se puede realizar desde ‘References / Add reference / Browse’.
Para poder llevar a cabo la comunicación entre el plugin y la FOCA mediante la API será
necesaria la creación de una clase publica llamada ‘Plugin’ con las propiedades ‘name’,
‘description’ y ‘exportItems’. Esta clase será instanciada cada vez que la FOCA cargue el plugin.
A continuación se ve una plantilla con esta estructura.
public class Plugin
{
private string _name = "Name";
private string _description = "Description";
private Export export = new Export();
public Plugin()
{
}
public string name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public string description
{
get
{
return _description;
}
set
{
_description = value;
}
}
public Export exportItems
{
get
{
return export;
}
}
}
Una vez llegados a este punto podremos compilar la DLL y dispondremos de una librería básica
– pero sin funcionalidad - para ser cargada en FOCA a modo de plugin.
Para realizar el desarrollo de la DLL así como su depuración aconsejamos la creación de un
nuevo proyecto dentro de la solución del plugin.
Este nuevo proyecto deberá ser configurado como ‘StartUp Project’ para que sea ejecutado
como primera instancia a la hora de llevar a cabo la depuración.
Será entonces en el ‘handler’ desde donde aconsejamos realizar las llamadas e inicialización de
nuestra DLL. Éste es sin embargo únicamente un consejo para llevar a cabo el desarrollo o
depuración de la librería.
En la siguiente captura se ve el código de uno de los ‘handler’ visualizando un formulario
localizado en el código del plugin.
GUI del plugin
La API permite dos modos de interactuar con la GUI de la FOCA: Por ventanas y por paneles
embebidos.
El desarrollo de GUI por ventanas es el propio plugin el encargado de crear y mostrar los
formularios que desee para visualizar la información. Este modo es muy similar a la forma
habitual en la que se desarrolla una aplicación con Windows Forms.
A continuación se ve una captura de la FOCA junto con el plugin ‘’ utilizando una visualización
mediante este sistema.
El sistema de paneles embebidos permite al plugin a integrarse dentro de la interfaz de la
FOCA. Para ello es necesario realizar la creación de un panel e introducir dentro del mismo los
controles que se deseen exportar a la interfaz.
A continuación se ve un ejemplo de un plugin utilizando este sistema.
Para embeber en la FOCA uno de estos paneles es necesario hacer uso del objeto
‘PluginPanel’ (PluginsAPI.Elements.PluginPanel) y añadirlo a la lista de exportación.
Ejemplo
public Plugin()
{
Panel panelForm = new Panel();
PluginPanel panelPlugin = new PluginPanel(panelForm, false);
export.Add(panelPlugin);
}
Una vez añadido el panel es necesario implementar la funcionalidad para mostrar el panel.
Esto puede llevarse a cabo añadiendo un nuevo ítem en el menú desplegable de plugins
exportando el objeto ‘PluginToolStripMenuItem’.
Ejemplo
public Plugin()
{
Panel panelForm = new Panel();
PluginPanel panelPlugin = new PluginPanel(panelForm, false);
ToolStripMenuItem toolStripMenu = new ToolStripMenuItem(_name);
toolStripMenu.Image = Properties.Resources.cookie;
toolStripMenu.Click += delegate
{
panelForm.BringToFront();
panelForm.Visible = true;
};
PluginToolStripMenuItem toolStripPlugin = new
PluginToolStripMenuItem(toolStripMenu);
export.Add(toolStripPlugin);
export.Add(panelPlugin);
}
En la siguiente captura de pantalla se ve un plugin con el código mostrado anteriormente,
embebiendo un panel vacio y agregando un ‘ToolStripItem’ en el desplegable de ‘Plugins’.
Capturar eventos
Los eventos de FOCA permiten a los plugins capturar determinados mensajes que son enviados
a éstos.
Para ello es necesaria la creación de un método de tipo ‘void’ en la clase ‘Plugin’ con el nombre
del evento a capturar.
Entre los eventos disponibles se encuentran los siguientes:
Evento Argumentos Descripción
(void) OnNewDomain Object[]
{
string domain
}
Envía un dominio.
(void) OnNewURL Object[]
{
string url
}
Envía una URL.
(void) OnNewIP Object[]
{
string ip
}
Envía una dirección IP.
(void) OnNewProject Object[]
{
string domain
}
Envía el dominio principal cuando un
proyecto es creado.
(void) OnNewNetrange Object[]
{
string ipFrom,
string ipTo
}
Envía el rango de inicio y fin de un
netrange.
(void) OnNewRelation Object[]
{
string ip,
string domain
}
Envía una relación de un dominio con una
IP cuando ésta es calculada.
(void) OnNewDocument (No implementado) (No implementado)
A continuación se ve una captura de pantalla donde se ve la plantilla capturando los dominios
agregados mediante el evento ‘OnNewDomain’.
Importar elementos desde el plugin a la FOCA
Para que los plugins puedan interactuar con la GUI de FOCA, la API dispone al desarrollador del
método Import.ImportEventCaller((ImportObject) iObject).
El constructor del objeto de tipo ‘ImportObject’ recibe dos parámetros de tipo
‘Import.Operation’ y ‘object’ con la siguiente definición:
ImportObject(Import.Operation operation, object o);
Entre las operaciones disponibles en la API se encuentran las siguientes, con los
correspondientes objetos a importar para cada tipo de operación.
Operación Objecto(s) a importar
AssociationDomainIP ImportElements.AssociationDomainIP
{
string domain,
String ip
}
AddDomain string domain
AddSQLi ImportElements.AddSQLI
{
string url,
String parameter
}
AddBackup ImportElements.AddBackUp
{
string url
}
AddDirectoryListing
(No implementado)
ImportElements.AddDirectoryListing
{
string url
}
AddDsStore
(No implementado)
ImportElements.AddDsStore
{
string url
}
AddGHDB ImportElements.AddGHDB
{
string url
}
AddInsecureMethod
(No implementado)
ImportElements.AddInsecureMethod
{
string url,
string method
}
AddLeak
(No implementado)
ImportElements.AddLeak
{
string url,
string description
}
AddListing
(No implementado)
ImportElements.AddListing
{
string url
}
AddMultiplesChoice
(No implementado)
ImportElements.AddMultiplesChoice
{
string url
}
AddProxy
(No implementado)
ImportElements.AddProxy
{
string url,
int port
}
AddSvn
(No implementado)
ImportElements.AddSvn
{
string url
}
AddUser
(No implementado)
ImportElements.AddUser
{
string domain,
string user
}
AddZoneTransfer
(No implementado)
ImportElements.AddZoneTransfer
{
string ip
}
AssignRol ImportElements.AsignRol
{
string ip,
string rol
}
AddIP String ip
AddURL String url
AddContextMenu ContextualMenu.Global
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowDomainsDomainItemMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowDomainsDomainMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowDomainsDomainRelatedDomainsItemMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowDomainsDomainRelatedDomainsMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowDomainsMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowMetadataMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowNetworkClientsItemMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowNetworkClientsMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowNetworkIpRangeMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowNetworkMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowNetworkServersItemMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowNetworkServersMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowNetworkUnlocatedItemMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowNetworkUnlocatedMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowProjectMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowRolesMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowRolesRolMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowRolesRolMenuItem
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowVulnerabilitiesMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowVulnerabilitiesVulnerabilitieMenu
{
ToolStripMenuItem menu
}
Elements.ContextualMenu.ShowVulnerabilitiesVulnerabilitieMenuItem
{
ToolStripMenuItem menu,
Elements.ContextualMenu.keyType menu
}
Ejemplo: Asigna al dominio ‘www.informática64.com’ una vulnerabilidad de tipo SQL Injection
en la URL http://www.informatica64.com/focaplugin.aspx sobre el parámetro ‘id’.
ImportObject iObject = new ImportObject(
Import.Operation.AddSQLi,
new ImportElements.AddSQLI(
"http://www.informatica64.com/focaplugin.aspx",
"id")
);
Import.ImportEventCaller(iObject);

Más contenido relacionado

La actualidad más candente

mostraremos como instalar un servidor personal
mostraremos como instalar un servidor personal mostraremos como instalar un servidor personal
mostraremos como instalar un servidor personal
Andy Hernandez
 
Linux ud13 - iniciar sesion en linux de forma remota
Linux   ud13 - iniciar sesion en linux de forma remotaLinux   ud13 - iniciar sesion en linux de forma remota
Linux ud13 - iniciar sesion en linux de forma remota
Javier Muñoz
 
Linux ud16 - usuarios de dominio de samba
Linux   ud16 - usuarios de dominio de sambaLinux   ud16 - usuarios de dominio de samba
Linux ud16 - usuarios de dominio de samba
Javier Muñoz
 
Linux ud17 - recursos compartidos con samba en un controlador dominio
Linux   ud17 - recursos compartidos con samba en un controlador dominioLinux   ud17 - recursos compartidos con samba en un controlador dominio
Linux ud17 - recursos compartidos con samba en un controlador dominio
Javier Muñoz
 

La actualidad más candente (20)

mostraremos como instalar un servidor personal
mostraremos como instalar un servidor personal mostraremos como instalar un servidor personal
mostraremos como instalar un servidor personal
 
Corcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocsCorcuera pablo gestorincidenciasocs
Corcuera pablo gestorincidenciasocs
 
instalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPIinstalacion e intregracion de OcsInventory-NG y GLPI
instalacion e intregracion de OcsInventory-NG y GLPI
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.
 
Linux ud13 - iniciar sesion en linux de forma remota
Linux   ud13 - iniciar sesion en linux de forma remotaLinux   ud13 - iniciar sesion en linux de forma remota
Linux ud13 - iniciar sesion en linux de forma remota
 
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...Sesion Nº 03   Tecnologias Web I   Instalación Y Configuración Del Servidor A...
Sesion Nº 03 Tecnologias Web I Instalación Y Configuración Del Servidor A...
 
Creación de extensiones nativas
Creación de extensiones nativasCreación de extensiones nativas
Creación de extensiones nativas
 
Montar un servidor web win7
Montar un servidor web win7Montar un servidor web win7
Montar un servidor web win7
 
Linux ud16 - usuarios de dominio de samba
Linux   ud16 - usuarios de dominio de sambaLinux   ud16 - usuarios de dominio de samba
Linux ud16 - usuarios de dominio de samba
 
Actividad ssh final - Ubuntu
Actividad ssh final - UbuntuActividad ssh final - Ubuntu
Actividad ssh final - Ubuntu
 
Tutorial de electiva
Tutorial de electivaTutorial de electiva
Tutorial de electiva
 
Practicas del 1 al 4
Practicas del 1 al 4Practicas del 1 al 4
Practicas del 1 al 4
 
Linux ud17 - recursos compartidos con samba en un controlador dominio
Linux   ud17 - recursos compartidos con samba en un controlador dominioLinux   ud17 - recursos compartidos con samba en un controlador dominio
Linux ud17 - recursos compartidos con samba en un controlador dominio
 
Modificar Extensiones Permitidas y Bloqueadas Exchange Online (OWA) Office 365
Modificar Extensiones Permitidas y Bloqueadas Exchange Online (OWA) Office 365Modificar Extensiones Permitidas y Bloqueadas Exchange Online (OWA) Office 365
Modificar Extensiones Permitidas y Bloqueadas Exchange Online (OWA) Office 365
 
ocs inventory gpli gestor incidencias castellano
ocs inventory gpli gestor incidencias castellanoocs inventory gpli gestor incidencias castellano
ocs inventory gpli gestor incidencias castellano
 
Conexión entre php y sql server
Conexión entre php y sql serverConexión entre php y sql server
Conexión entre php y sql server
 
Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012Manual de la conexión de php con sqlserver 2012
Manual de la conexión de php con sqlserver 2012
 
Tutorial de instalación de apache, php, mysql y phpmyadmin
Tutorial de instalación de apache, php, mysql y phpmyadminTutorial de instalación de apache, php, mysql y phpmyadmin
Tutorial de instalación de apache, php, mysql y phpmyadmin
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Implementación y Administración Hyper-V 2008 R2
Implementación y Administración Hyper-V 2008 R2Implementación y Administración Hyper-V 2008 R2
Implementación y Administración Hyper-V 2008 R2
 

Destacado

Destacado (20)

No me indexes que me cacheo
No me indexes que me cacheoNo me indexes que me cacheo
No me indexes que me cacheo
 
Guía de uso de Latch en la UNIR
Guía de uso de Latch en la UNIRGuía de uso de Latch en la UNIR
Guía de uso de Latch en la UNIR
 
LDAP Injection Techniques
LDAP Injection TechniquesLDAP Injection Techniques
LDAP Injection Techniques
 
Modelado de amenazas en el contexto de la indexación de páginas y propuesta d...
Modelado de amenazas en el contexto de la indexación de páginas y propuesta d...Modelado de amenazas en el contexto de la indexación de páginas y propuesta d...
Modelado de amenazas en el contexto de la indexación de páginas y propuesta d...
 
El Hardware en Apple ¿Es tan bueno?
El Hardware en Apple ¿Es tan bueno?El Hardware en Apple ¿Es tan bueno?
El Hardware en Apple ¿Es tan bueno?
 
Curso Online de Especialización en Seguridad Informática para la Ciberdefensa
Curso Online de Especialización en Seguridad Informática para la CiberdefensaCurso Online de Especialización en Seguridad Informática para la Ciberdefensa
Curso Online de Especialización en Seguridad Informática para la Ciberdefensa
 
Auditoría de TrueCrypt: Informe final fase II
Auditoría de TrueCrypt: Informe final fase IIAuditoría de TrueCrypt: Informe final fase II
Auditoría de TrueCrypt: Informe final fase II
 
WebBrowsing Fingerprinting y Privacidad en entornos de Big Data
WebBrowsing Fingerprinting y Privacidad en entornos de Big DataWebBrowsing Fingerprinting y Privacidad en entornos de Big Data
WebBrowsing Fingerprinting y Privacidad en entornos de Big Data
 
XSS Google Persistentes
XSS Google PersistentesXSS Google Persistentes
XSS Google Persistentes
 
Latch Security Scenarios
Latch Security ScenariosLatch Security Scenarios
Latch Security Scenarios
 
El juego es el mismo
El juego es el mismoEl juego es el mismo
El juego es el mismo
 
X Fórum AUSAPE 2014: Un Decálogo de Seguridad Máligna
X Fórum AUSAPE 2014: Un Decálogo de Seguridad MálignaX Fórum AUSAPE 2014: Un Decálogo de Seguridad Máligna
X Fórum AUSAPE 2014: Un Decálogo de Seguridad Máligna
 
Digital latches for your digital Life
Digital latches for your digital LifeDigital latches for your digital Life
Digital latches for your digital Life
 
Ataques XSS Google Persistentes
Ataques XSS Google PersistentesAtaques XSS Google Persistentes
Ataques XSS Google Persistentes
 
It's a Kind of Magic
It's a Kind of MagicIt's a Kind of Magic
It's a Kind of Magic
 
Hacking con Python
Hacking con PythonHacking con Python
Hacking con Python
 
RootedCON 2014: Playing and Hacking with Digital Latches
RootedCON 2014: Playing and Hacking with Digital LatchesRootedCON 2014: Playing and Hacking with Digital Latches
RootedCON 2014: Playing and Hacking with Digital Latches
 
Ingenieros y hackers
Ingenieros y hackersIngenieros y hackers
Ingenieros y hackers
 
Pentesting con PowerShell: Libro de 0xWord
Pentesting con PowerShell: Libro de 0xWordPentesting con PowerShell: Libro de 0xWord
Pentesting con PowerShell: Libro de 0xWord
 
ShmooCON 2009 : Re-playing with (Blind) SQL Injection
ShmooCON 2009 : Re-playing with (Blind) SQL InjectionShmooCON 2009 : Re-playing with (Blind) SQL Injection
ShmooCON 2009 : Re-playing with (Blind) SQL Injection
 

Similar a Foca API v0.1

Applets
AppletsApplets
Applets
jent46
 
Herramientas para el desarrollo de aplicaciones SharePoint
Herramientas para el desarrollo de aplicaciones SharePointHerramientas para el desarrollo de aplicaciones SharePoint
Herramientas para el desarrollo de aplicaciones SharePoint
goreorti
 

Similar a Foca API v0.1 (20)

UDA-Plugin UDA. Guia de desarrollo
UDA-Plugin UDA. Guia de desarrolloUDA-Plugin UDA. Guia de desarrollo
UDA-Plugin UDA. Guia de desarrollo
 
Interfaces de usuario con PyGTK
Interfaces de usuario con PyGTKInterfaces de usuario con PyGTK
Interfaces de usuario con PyGTK
 
INFOSAN VISUAL BASIC
INFOSAN VISUAL BASICINFOSAN VISUAL BASIC
INFOSAN VISUAL BASIC
 
Vb
VbVb
Vb
 
Interfaces graficas(1)
Interfaces graficas(1)Interfaces graficas(1)
Interfaces graficas(1)
 
Examen programación
Examen programaciónExamen programación
Examen programación
 
Manual de android parte 1
Manual de android parte 1Manual de android parte 1
Manual de android parte 1
 
visual basic
visual basicvisual basic
visual basic
 
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...
CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...CONEXION A  LA BASE DE DATOS  SQLITE A TRAVES DE UNA APLICACION  MOVIL  ANDRO...
CONEXION A LA BASE DE DATOS SQLITE A TRAVES DE UNA APLICACION MOVIL ANDRO...
 
Arduino PLC: Manual Guía de Soapbox snap
Arduino PLC: Manual Guía de Soapbox snapArduino PLC: Manual Guía de Soapbox snap
Arduino PLC: Manual Guía de Soapbox snap
 
Tutorial net beans
Tutorial net beansTutorial net beans
Tutorial net beans
 
Applets
AppletsApplets
Applets
 
Applets
AppletsApplets
Applets
 
Programación en Java: Applets
Programación en Java: AppletsProgramación en Java: Applets
Programación en Java: Applets
 
Herramientas para el desarrollo de aplicaciones SharePoint
Herramientas para el desarrollo de aplicaciones SharePointHerramientas para el desarrollo de aplicaciones SharePoint
Herramientas para el desarrollo de aplicaciones SharePoint
 
Clase
ClaseClase
Clase
 
Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)
 
Visual basic
Visual basicVisual basic
Visual basic
 
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptxEvolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
 
Sesión5 applets
Sesión5 appletsSesión5 applets
Sesión5 applets
 

Más de Chema Alonso

Más de Chema Alonso (15)

CyberCamp 2015: Low Hanging Fruit
CyberCamp 2015: Low Hanging FruitCyberCamp 2015: Low Hanging Fruit
CyberCamp 2015: Low Hanging Fruit
 
Índice Pentesting con Kali 2.0
Índice Pentesting con Kali 2.0Índice Pentesting con Kali 2.0
Índice Pentesting con Kali 2.0
 
Configurar y utilizar Latch en Magento
Configurar y utilizar Latch en MagentoConfigurar y utilizar Latch en Magento
Configurar y utilizar Latch en Magento
 
Cazando Cibercriminales con: OSINT + Cloud Computing + Big Data
Cazando Cibercriminales con: OSINT + Cloud Computing + Big DataCazando Cibercriminales con: OSINT + Cloud Computing + Big Data
Cazando Cibercriminales con: OSINT + Cloud Computing + Big Data
 
New Paradigms of Digital Identity: Authentication & Authorization as a Servic...
New Paradigms of Digital Identity: Authentication & Authorization as a Servic...New Paradigms of Digital Identity: Authentication & Authorization as a Servic...
New Paradigms of Digital Identity: Authentication & Authorization as a Servic...
 
CritoReto 4: Buscando una aguja en un pajar
CritoReto 4: Buscando una aguja en un pajarCritoReto 4: Buscando una aguja en un pajar
CritoReto 4: Buscando una aguja en un pajar
 
Dorking & Pentesting with Tacyt
Dorking & Pentesting with TacytDorking & Pentesting with Tacyt
Dorking & Pentesting with Tacyt
 
Recuperar dispositivos de sonido en Windows Vista y Windows 7
Recuperar dispositivos de sonido en Windows Vista y Windows 7Recuperar dispositivos de sonido en Windows Vista y Windows 7
Recuperar dispositivos de sonido en Windows Vista y Windows 7
 
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
Cuarta Edición del Curso Online de Especialización en Seguridad Informática p...
 
Shuabang Botnet
Shuabang BotnetShuabang Botnet
Shuabang Botnet
 
Tu iPhone es tan (in)seguro como tu Windows
Tu iPhone es tan (in)seguro como tu WindowsTu iPhone es tan (in)seguro como tu Windows
Tu iPhone es tan (in)seguro como tu Windows
 
Codemotion ES 2014: Love Always Takes Care & Humility
Codemotion ES 2014: Love Always Takes Care & HumilityCodemotion ES 2014: Love Always Takes Care & Humility
Codemotion ES 2014: Love Always Takes Care & Humility
 
Analizando la efectividad de ataques de correlación pasivos en la red de ano...
Analizando la efectividad de ataques de correlación pasivos en la red de ano...Analizando la efectividad de ataques de correlación pasivos en la red de ano...
Analizando la efectividad de ataques de correlación pasivos en la red de ano...
 
X Forum AUSAPE 2014
X Forum AUSAPE 2014X Forum AUSAPE 2014
X Forum AUSAPE 2014
 
Código para Latch físico: Touch_calibrate.py
Código para Latch físico: Touch_calibrate.pyCódigo para Latch físico: Touch_calibrate.py
Código para Latch físico: Touch_calibrate.py
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (10)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 

Foca API v0.1

  • 1. FOCA API v0.1 Creación de un plugin básico Debemos crear un nuevo proyecto de tipo ‘Class Library’ para la generación de una DLL compilada. El proyecto debe estar desarrollado sobre el Framework .NET 3.5 o inferior y la plataforma sobre la que se debe compilar es para ‘Any CPU’. Esto es accesible desde las ‘propiedades del proyecto / Build / Platform target’. Una vez el proyecto esté creado será necesario agregar como referencia la DLL de la API de FOCA (PluginsAPI.dll). Esto se puede realizar desde ‘References / Add reference / Browse’.
  • 2. Para poder llevar a cabo la comunicación entre el plugin y la FOCA mediante la API será necesaria la creación de una clase publica llamada ‘Plugin’ con las propiedades ‘name’, ‘description’ y ‘exportItems’. Esta clase será instanciada cada vez que la FOCA cargue el plugin. A continuación se ve una plantilla con esta estructura. public class Plugin { private string _name = "Name"; private string _description = "Description"; private Export export = new Export(); public Plugin() { } public string name { get { return _name; } set { _name = value; } } public string description { get { return _description; } set { _description = value; } } public Export exportItems { get { return export; } } }
  • 3. Una vez llegados a este punto podremos compilar la DLL y dispondremos de una librería básica – pero sin funcionalidad - para ser cargada en FOCA a modo de plugin. Para realizar el desarrollo de la DLL así como su depuración aconsejamos la creación de un nuevo proyecto dentro de la solución del plugin. Este nuevo proyecto deberá ser configurado como ‘StartUp Project’ para que sea ejecutado como primera instancia a la hora de llevar a cabo la depuración.
  • 4. Será entonces en el ‘handler’ desde donde aconsejamos realizar las llamadas e inicialización de nuestra DLL. Éste es sin embargo únicamente un consejo para llevar a cabo el desarrollo o depuración de la librería. En la siguiente captura se ve el código de uno de los ‘handler’ visualizando un formulario localizado en el código del plugin. GUI del plugin La API permite dos modos de interactuar con la GUI de la FOCA: Por ventanas y por paneles embebidos. El desarrollo de GUI por ventanas es el propio plugin el encargado de crear y mostrar los formularios que desee para visualizar la información. Este modo es muy similar a la forma habitual en la que se desarrolla una aplicación con Windows Forms. A continuación se ve una captura de la FOCA junto con el plugin ‘’ utilizando una visualización mediante este sistema.
  • 5. El sistema de paneles embebidos permite al plugin a integrarse dentro de la interfaz de la FOCA. Para ello es necesario realizar la creación de un panel e introducir dentro del mismo los controles que se deseen exportar a la interfaz. A continuación se ve un ejemplo de un plugin utilizando este sistema. Para embeber en la FOCA uno de estos paneles es necesario hacer uso del objeto ‘PluginPanel’ (PluginsAPI.Elements.PluginPanel) y añadirlo a la lista de exportación. Ejemplo
  • 6. public Plugin() { Panel panelForm = new Panel(); PluginPanel panelPlugin = new PluginPanel(panelForm, false); export.Add(panelPlugin); } Una vez añadido el panel es necesario implementar la funcionalidad para mostrar el panel. Esto puede llevarse a cabo añadiendo un nuevo ítem en el menú desplegable de plugins exportando el objeto ‘PluginToolStripMenuItem’. Ejemplo public Plugin() { Panel panelForm = new Panel(); PluginPanel panelPlugin = new PluginPanel(panelForm, false); ToolStripMenuItem toolStripMenu = new ToolStripMenuItem(_name); toolStripMenu.Image = Properties.Resources.cookie; toolStripMenu.Click += delegate { panelForm.BringToFront(); panelForm.Visible = true; }; PluginToolStripMenuItem toolStripPlugin = new PluginToolStripMenuItem(toolStripMenu); export.Add(toolStripPlugin); export.Add(panelPlugin); } En la siguiente captura de pantalla se ve un plugin con el código mostrado anteriormente, embebiendo un panel vacio y agregando un ‘ToolStripItem’ en el desplegable de ‘Plugins’. Capturar eventos
  • 7. Los eventos de FOCA permiten a los plugins capturar determinados mensajes que son enviados a éstos. Para ello es necesaria la creación de un método de tipo ‘void’ en la clase ‘Plugin’ con el nombre del evento a capturar. Entre los eventos disponibles se encuentran los siguientes: Evento Argumentos Descripción (void) OnNewDomain Object[] { string domain } Envía un dominio. (void) OnNewURL Object[] { string url } Envía una URL. (void) OnNewIP Object[] { string ip } Envía una dirección IP. (void) OnNewProject Object[] { string domain } Envía el dominio principal cuando un proyecto es creado. (void) OnNewNetrange Object[] { string ipFrom, string ipTo } Envía el rango de inicio y fin de un netrange. (void) OnNewRelation Object[] { string ip, string domain } Envía una relación de un dominio con una IP cuando ésta es calculada. (void) OnNewDocument (No implementado) (No implementado) A continuación se ve una captura de pantalla donde se ve la plantilla capturando los dominios agregados mediante el evento ‘OnNewDomain’.
  • 8. Importar elementos desde el plugin a la FOCA Para que los plugins puedan interactuar con la GUI de FOCA, la API dispone al desarrollador del método Import.ImportEventCaller((ImportObject) iObject). El constructor del objeto de tipo ‘ImportObject’ recibe dos parámetros de tipo ‘Import.Operation’ y ‘object’ con la siguiente definición: ImportObject(Import.Operation operation, object o); Entre las operaciones disponibles en la API se encuentran las siguientes, con los correspondientes objetos a importar para cada tipo de operación. Operación Objecto(s) a importar AssociationDomainIP ImportElements.AssociationDomainIP { string domain, String ip } AddDomain string domain AddSQLi ImportElements.AddSQLI { string url, String parameter } AddBackup ImportElements.AddBackUp { string url } AddDirectoryListing (No implementado) ImportElements.AddDirectoryListing { string url } AddDsStore (No implementado) ImportElements.AddDsStore {
  • 9. string url } AddGHDB ImportElements.AddGHDB { string url } AddInsecureMethod (No implementado) ImportElements.AddInsecureMethod { string url, string method } AddLeak (No implementado) ImportElements.AddLeak { string url, string description } AddListing (No implementado) ImportElements.AddListing { string url } AddMultiplesChoice (No implementado) ImportElements.AddMultiplesChoice { string url } AddProxy (No implementado) ImportElements.AddProxy { string url, int port } AddSvn (No implementado) ImportElements.AddSvn { string url } AddUser (No implementado) ImportElements.AddUser { string domain, string user } AddZoneTransfer (No implementado) ImportElements.AddZoneTransfer { string ip } AssignRol ImportElements.AsignRol { string ip, string rol } AddIP String ip AddURL String url AddContextMenu ContextualMenu.Global { ToolStripMenuItem menu } Elements.ContextualMenu.ShowDomainsDomainItemMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowDomainsDomainMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowDomainsDomainRelatedDomainsItemMenu { ToolStripMenuItem menu
  • 10. } Elements.ContextualMenu.ShowDomainsDomainRelatedDomainsMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowDomainsMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowMetadataMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowNetworkClientsItemMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowNetworkClientsMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowNetworkIpRangeMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowNetworkMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowNetworkServersItemMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowNetworkServersMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowNetworkUnlocatedItemMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowNetworkUnlocatedMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowProjectMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowRolesMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowRolesRolMenu { ToolStripMenuItem menu }
  • 11. Elements.ContextualMenu.ShowRolesRolMenuItem { ToolStripMenuItem menu } Elements.ContextualMenu.ShowVulnerabilitiesMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowVulnerabilitiesVulnerabilitieMenu { ToolStripMenuItem menu } Elements.ContextualMenu.ShowVulnerabilitiesVulnerabilitieMenuItem { ToolStripMenuItem menu, Elements.ContextualMenu.keyType menu } Ejemplo: Asigna al dominio ‘www.informática64.com’ una vulnerabilidad de tipo SQL Injection en la URL http://www.informatica64.com/focaplugin.aspx sobre el parámetro ‘id’. ImportObject iObject = new ImportObject( Import.Operation.AddSQLi, new ImportElements.AddSQLI( "http://www.informatica64.com/focaplugin.aspx", "id") ); Import.ImportEventCaller(iObject);