Herramientas de usuario

Herramientas del sitio


foo

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
foo [2021/10/01 11:45] – [Ejemplo botnet] tempwinfoo [2023/04/08 15:57] (actual) – [Uncle Bob SOLID principles] tempwin
Línea 1: Línea 1:
- 
  
 burpsuite burpsuite
Línea 53: Línea 52:
   * Cliente envía ACK   * Cliente envía ACK
  
-Si un puerto está abierto:+Si un puerto está **abierto**:
  
-  SYN +  SYN 
-  SYN/ACK +  SYN/ACK 
-  RST/ACK+  RST/ACK
  
-Si está cerrado+Si está **cerrado**
  
   * SYN   * SYN
   * RST   * RST
  
-Si está filtrado:+Si está **filtrado**: 
 + 
 +  * SYN (aquí lo detiene un firewall)
  
  
Línea 78: Línea 79:
  
  
-Ciclo de vida de un ataque:+Ciclo de vida de un ataque a un sistema:
  
   - Identificacion del objetivo   - Identificacion del objetivo
   - Análisis de puertos y servicios   - Análisis de puertos y servicios
   - Análisis de vulnerabilidades   - Análisis de vulnerabilidades
-  - Explotación +  - Explotación de vulnerabilidades. 
-  - Post-explotación+  - Post-explotación del sistema
  
 === Reconocimiento === === Reconocimiento ===
Línea 297: Línea 298:
  
  
-==== Ejemplo botnet ====+==== Virus ====
  
-  * [[https://github.com/malwaredllc/byob|byob]]+El virtus es ui tipo específico de malware. Es común llamar "virus" al ¡malware, pero en realidad es solo uun subconjkunt 
 + 
 +Su nombre viene por su parecido a los virus reales (infección y propagaci´ñon). Para su propagación necesitanb que cierta interacción por parte del usuario 
 + 
 +  Infacta otros programas 
 +  * Capacidad de mutación 
 +  * Capacidad de cifrado 
 +  * Altera datos 
 +  * Corrompe ficheros 
 +  * Auto-propatación 
 + 
 +==== Gusanos ==== 
 + 
 +Los gusanos, habitaulmetnte lamados worms, son programas maliciosos que se porpagan por la red de forma automática. Se transmiten explotante vunerabilidaes de los sistemas sin que el usuario tenga que interactuar con ellos de ninguna manera. Este tipo de malware es habitaual en teléfonos,. ya quye este tipo de dispositivo conectado es idóneo para una porpagación r´´ñaiuda 
 + 
 +Un gusano muy famoso, Stuxnet, es un malware supuestamente desarrollado por Israel y Estados unidos diseñado para infectar infraestructuras críticas que infecxtó a 60.000 equipos en irán. 
 + 
 +Otro ejemplo es el virus "I love you" que se propagaba por e-mail e iba borrando y sobrescribiendo ficheros en sus víctimas. 
 + 
 +==== Troyanos ==== 
 + 
 +Un troyano o caballo de Troya es un programa malicioso (mnalware) que se presenta al usuario como un programa aparentemente inofesnivo. El término proviene de la Odisea de Homero. 
 + 
 +==== Botnet ==== 
 + 
 +Una botnet es una red de ordenadores infecdtados controlados por un ciberledincuente. 
 + 
 +Los ordenadores infectados obedecerán a las órdenes del ciberdelincuente, de forma que éste dispone de un "ejército" de ordenadores listso para realizar operaciones maliciosas en >Internet en cualquier mopmento. 
 + 
 +Ciclo de vida: 
 + 
 +  - Infección__:: el atacante infecta ordenadores personales opr medio de troyanos 
 +  - asdfadf 
 +  - Una tercera parte malintencionada compra acceso a la botnet para realizaar acciones maliciosas (ddos, spam ,fraude de clicks...) 
 +  - Se lanza el ataque distrubuido.  
 + 
 +Ejemplo de botnet:  
 + 
 +  * Carna botnet. Fue una red de 420.000 dispositivos infectados. 
 +  * ZeroAccess botnet: especializada en minería de bitcoin.  
 + 
 + 
 +https://www.incibe.es/protege-tu-empresa/herramientas/servicio-antibotnet 
 + 
 +==== Construyendo una botnet ==== 
 + 
 +Utilizaremos [[https://github.com/malwaredllc/byob|byob]] 
 + 
 +En el servidor (el atacante):
  
 <code> <code>
Línea 305: Línea 354:
 </code> </code>
  
-Se generarán varios ficheros, pero el que más nos interesa es ''modules/clientes/droppers/mibot.py''. Este fichero es el que hay que distribuir a las víctimas para que lo ejecutase.+Se generarán varios ficheros, pero el que más nos interesa es ''modules/clients/droppers/mibot.py''. Este fichero es el que hay que distribuir a las víctimas para que lo ejecutase.
  
 Servidor web básico en Python: Servidor web básico en Python:
Línea 331: Línea 380:
 </code> </code>
  
-En el servidor veremos que se ha establecido una conexión+En el servidor veremos que se ha establecido una conexión
 + 
 +{{ :informatica:seguridad_informatica:byob-server.png?nolink |}}
  
   * ''sessions'': bots activos   * ''sessions'': bots activos
   * ''help'': opciones del panel de control   * ''help'': opciones del panel de control
 +
 +===== Uncle Bob SOLID principles =====
 +
 +Las bases de la programación orientada a objetos son:
 +
 +  * Encapsulación
 +  * Herencia
 +  * Polimorfismo
 +
 +La programación orientada a objetos va sobre la gestión de dependencias en el código para que se pueda prevenir:
 +
 +  * Rigidez
 +  * Fragilidad
 +  * No reutilización
 +
 +Principios **SOLID**, principios de diseño de clases:
 +
 +  * **S**RP: Single Responsibility Principle.
 +  * **O**CP: The Open/Closed Principle.
 +  * **L**SP: The Liskov Substitution Principle.
 +  * **I**SP: The Interface Segregation Principle.
 +  * **D**IP: The Dependency Inversion Principle.
 +
 +<WRAP center round info 60%>
 +Los principios de diseño **SOLID** son principios, no reglas. Es mejor usar el sentido común cuando se aplica SOLID. **SOLID** es una herramienta, no el objetivo.
 +</WRAP>
 +
 +==== Single Responsibility Principle ====
 +
 +Una clase debería tener una y solo una única razón para cambiar.
 +
 +La palabra **responsabilidad** no quiere decir función o lo que hace la clase. La palabra **responsabilidad** se refiere al cambio. 
 +
 +Si una clase tiene más de un motivo para cambiar, estaría violando este principio.
 +
 +En resumen, no pongas funciones que cambian por diferentes razones en la misma clase.
 +
 +==== Open/Closed Principle ====
 +
 +Los módulos deberían estar abiertos a la extensión, pero cerrados a la modificación.
 +
 +Esto quiere decir que deberías poder modificar lo que hace un módulo sin cambiar el módulo. Cambiar el comportamiento del módulo, sin cambiar el módulo.
 +
 +Extiende la funcionalidad añadiendo nuevo código en lugar de cambiar el exsitente.
 +
 +Separa comportamientos para que el sistema pueda ser fácilmente extensible, pero no pueda romperse.
 +
 +El objetivo es llegar a un punto donde nunca podrás romper el núcleo (//core//) de tu sistema.
 +
 +==== Liskov Substitution Principle ====
 +
 +Las clases derivadas deben ser usables a través de la interfaz de base sin necesidad de que el usuario sepa la diferencia.
 +
 +====  The Interface Segregation Principle ====
 +
 +Ningún cliente debería ser forzado a depender de métodos que no usa.
 +
 +Cambiar un método en una clase no debería afectar a clases que no dependen de él.
 +
 +Reemplazar interfaces demasiado populadas por varias pequeñas, pero específicas interfaces.
 +
 +
 +==== The Dependency Inversion Principle ====
 +
 +Los módulos de alto nivel no deberían depender de módulos de bajo nivel. Ambos deberían depender de abstracciones.
 +
 +Nunca dependas de algo concreto, solo de las abstracciones.
 +
 +Hay que ser capaz de modificar una implementación fácilmente sin alterar el código de alto nivel.
foo.1633081518.txt.gz · Última modificación: por tempwin