# Recoleción de información
[TOC]
## Reconocimiento de infraestructura
En inglés *infrastructure footprinting*, se refiere al proceso de identificar y mapear la infraestructura tecnológica de una organización, incluidos sus dominios, servidores, redes, aplicaciones y otros activos tecnológicos. Esto implica recopilar información sobre la infraestructura de TI de la organización de varias fuentes disponibles públicamente, como sitios web, plataformas de redes sociales, motores de búsqueda y otros recursos en línea.
La huella de la infraestructura es una parte importante de OSINT, ya que puede proporcionar información valiosa sobre el entorno de TI de una organización, que se puede utilizar para identificar vulnerabilidades y posibles superficies de ataque. Al mapear la infraestructura tecnológica de una organización, un atacante puede obtener una mejor comprensión de sus sistemas, redes y aplicaciones, e identificar posibles debilidades o puntos de entrada que pueden explotarse.
### WHOIS
#### Protocolo WHOIS
WHOIS es un protocolo esbozado en el [RFC 3912](https://datatracker.ietf.org/doc/html/rfc39123) que opera en la capa 7 del modelo OSI y proporciona acceso cliente/servidor a información sobre dominios de Internet y bloques de redes IPv4 e IPv6 utilizando TCP/43. ICANN[^1] requiere que las empresas de registro de gTLD[^2] y ccTLD[^3] recopilen y mantengan datos de registro precisos y proporcionen acceso público a esos datos a través de WHOIS. Por tanto, las empresas de registro de TLD y la misma ICANN poseen sus propios servidores WHOIS.
Desde mayo de 2018, la ICANN implementó el Reglamento General de Protección de Datos (RGPD) de la UE para cumplir con las normas de privacidad de datos y limitar la información que se muestra en WHOIS, lo que afectó a la forma en que las empresas de registro de dominios manejan la información de registro y la hacen pública a través de WHOIS.
[^1]: Internet Corporation for Assigned Names and Numbers
[^2]: generic top-level domain
[^3]: country code top-level domain
#### GNU `whois`
La heramienta `whois` es una interfaz de usuario quenos permite hacer consultas en el protocoo WHOIS
<table>
<tr>
<td>
x
</td>
<td>
x
</td>
</tr>
</table>
### DNS: Domain Name System
```mermaid
graph RL
A[root]
B[co TLD]
C[edu SLD]
D[unal]
E[medellin.unal]
F[bogota.unal]
G[minas.medellin.unal]
H[ingenieria.bogota.unal]
I[sia.unal.edu.co]
A --> B;
B --> C;
C --> D;
subgraph Zona1
D --> I
end
subgraph Zona2
D --> E;
E --> G;
end
subgraph Zona3
D --> F;
F --> H;
end
```
Un punto partida para el reconocimiento de infraestructura de una organización es su nombre de dominio de internet, puesto que usualmente es el dato inicial y obviamente más público que se obtiene de la organización luego del nombre de su razón social.
El *Sistema de Nombres de Dominio* es como una guía telefónica de Internet. Es responsable de resolver los nombres de host legibles por humanos en direcciones IP legibles por máquinas. El sistema incluye servidores DNS autorizados que proporcionan información y cachés DNS que almacenan temporalmente esa información para búsquedas de clientes. Una consulta DNS típica es muy simple: un cliente proporciona un nombre de host legible por humanos y recibe como respuesta una dirección IP. Sin embargo, el sistema asume que el cliente que realiza la consulta conoce el nombre de host.
#### Zona DNS
Los servidores DNS alojan zonas (`DNS_Server 1..* DNS_Zone`). Una zona DNS es una porción del espacio de nombres de dominio que es atendida por un servidor DNS. Por ejemplo, example.com con todos sus subdominios puede ser una zona. Sin embargo, second.example.com también puede ser una zona separada.
#### Transferencia de zona DNS
El DNS es un servicio crítico. Por lo tanto, cada zona debe tener al menos dos servidores DNS. Sin embargo, una zona puede ser grande y requerir cambios frecuentes. Si edita manualmente los datos de la zona en cada servidor por separado, lleva mucho tiempo y hay mucho potencial para errores. Es por eso que se necesita la transferencia de zona DNS.
Puede utilizar diferentes mecanismos para la transferencia de zona DNS, pero el más sencillo es AXFR[^AXFR] (hablando técnicamente, AXFR se refiere al protocolo utilizado durante la transferencia de zona DNS). Es una solicitud iniciada por el cliente. Por lo tanto, puede editar la información en el servidor DNS primario y luego usar AXFR desde el servidor DNS secundario para descargar toda la zona.
[^AXFR]: Authoritative Zone Transfer
#### RR: DNS *Resource Record* o Registro DNS
Es una entrada en un archivo (o base de datos) DNS que asocia información específica a un nombre de dominio. Hay varios tipos de registros DNS, cada uno de los cuales tiene un propósito específico. Los tipos más comunes de registros DNS incluyen:
* A (Address): asigna un nombre de dominio a una dirección IPv4.
* AAAA (IPv6 Address): asigna un nombre de dominio a una dirección IPv6.
* MX (Mail Exchange): especifica los servidores de correo responsables de aceptar el correo electrónico entrante para un dominio.
* CNAME (Canonical Name): asigna un alias o subdominio al nombre de dominio canónico (primario).
* NS (Name Server): especifica los servidores DNS autorizados para un dominio.
* TXT (text): almacena datos de texto arbitrarios asociados con un dominio, como registros SPF para la autenticación de correo electrónico.
Estos registros DNS se utilizan en un archivo de configuración DNS en un servidor DNS:
#### Archivo DNS
Digamos que tengo una máquina `ns1.example.com` que funciona com un *Servidor DNS autoritativo* para`ejemplo.com`, el archivo DNS se vería así:
```
$ORIGIN example.com.
$TTL 86400
@ IN SOA ns1.example.com. hostmaster.example.com. (
2022042001 ; serial number
3600 ; refresh period
1800 ; retry period
604800 ; expire time
86400 ; minimum TTL
)
; Name Server records
@ IN NS ns1.example.com.
@ IN NS ns2.example.com.
; Address records
@ IN A 192.0.2.1
www IN A 192.0.2.2
mail IN A 192.0.2.3
; Canonical Name records
ftp IN CNAME www
; Mail Exchange records
@ IN MX 10 mail.example.com.
; Reverse DNS records
1 IN PTR example.com.
2 IN PTR www.example.com.
3 IN PTR mail.example.com.
```
* Un registro SOA (Start of Authority) que especifica el servidor de nombres principal para la zona, la dirección de correo electrónico de la persona responsable de la zona y otros detalles administrativos.
* Dos registros NS (Name Server) que especifican los servidores DNS autoritativos para el dominio: "ns1.example.com" y "ns2.example.com".
* Tres registros A (Address) que asignan el nombre de dominio "example.com", "www.example.com" y "mail.example.com" a las direcciones IPv4 "192.0.2.1", "192.0.2.2" y "192.0.2.3".
* Un registro CNAME (Canonical Name) que especifica que el nombre de host "ftp.example.com" es un alias para "www.example.com".
* Un registro MX (Mail Exchange) que especifica el servidor de correo para el dominio: "mail.example.com".
* Tres registros PTR (Pointer) que asignan las direcciones IPv4 "192.0.2.1", "192.0.2.2" y "192.0.2.3" a sus respectivos nombres de host.
#### Host file
Un archivo Hosts (a veces llamado archivo HOSTS) es un archivo de texto local en el sistema operativo de una computadora que asigna nombres de host a direcciones IP. Se usa a menudo con fines de prueba, resolución de problemas o para anular la resolución de DNS para nombres de host específicos. También se puede usar para bloquear el acceso a sitios web específicos al redirigir sus nombres de dominio a una dirección IP inexistente o a una dirección de bucle invertido local. La ubicación del archivo Hosts varía según el sistema operativo que se utilice. En los sistemas Unix y Linux, generalmente se encuentra en el directorio `/etc/`, mientras que en los sistemas Windows, generalmente se encuentra en el directorio `C:\Windows\System32\drivers\etc\`.
## GNU `dig`
### Obtners zonas DNS
:warning: Algunos servidores DNS bloquean la respuesta
```bash
$ DOMINIO=unal.edu.co
```
Obtener servidores DNS autorizativos
```bash
$ dig +short ns $DOMINIO
ns-1198.awsdns-21.org.
ns-1583.awsdns-05.co.uk.
ns-464.awsdns-58.com.
ns-984.awsdns-59.net.
```
```bash
dig AXFR $DOMINIO @ns-1583.awsdns-05.co.uk.
```
### DNSDumpsater
## Nmap
### `-A` Aggressive scan options
> This option enables additional advanced and aggressive options. I haven't decided exactly which it stands for yet. Presently this enables OS detection (-O), version scanning (-sV), script scanning (-sC) and traceroute (--traceroute).. More features may be added in the future. The point is to enable a comprehensive set of scan options without people having to remember a large set of flags. However, because script scanning with the default set is considered intrusive, you should not use -A against target networks without permission. This option only enables features, and not timing options (such as -T4) or verbosity options (-v) that you might want as well.
### -sC Default NSE scripts
> Performs a script scan using the default set of scripts. It is equivalent to --script=default. Some of the scripts in this category are considered intrusive and should not be run against a target network without permission.
* Buscar un script en NSE
```bash=
grep $keyword /usr/share/nmap/scripts/script.db
```
### -sV Versión del servicio
> Enables version detection, as discussed above. Alternatively, you can use -A, which enables version detection among other things.
### -O Deteción de SO con TCP/IP stack fingerprinting
> (Enable OS detection) Enables OS detection, as discussed above. Alternatively, you can use -A to enable OS detection along with other things.
### -sU Escaneo púertos UDP
### -sT Escaneo púertos TCP, Try-Way-Hanshake
### -sS Escaneo púertos TCP, Medio abierto
SYN scan is the default and most popular scan option for good reasons. It can be performed quickly,
scanning thousands of ports per second on a fast network not hampered by restrictive firewalls. SYN
scan is relatively unobtrusive and stealthy, since it never completes TCP connections. It also works
against any compliant TCP stack rather than depending on idiosyncrasies of specific platforms as
Nmap´s FIN/NULL/Xmas, Maimon and idle scans do. It also allows clear, reliable differentiation
between the open, closed, and filtered states.
This technique is often referred to as half-open scanning, because you don´t open a full TCP
connection. You send a SYN packet, as if you are going to open a real connection and then wait for a
response. A SYN/ACK indicates the port is listening (open), while a RST (reset) is indicative of a
non-listener. If no response is received after several retransmissions, the port is marked as
filtered. The port is also marked filtered if an ICMP unreachable error (type 3, code 1, 2, 3, 9, 10,
or 13) is received.
### -p Definir puertos
* Todos los puertos: `-p-`
* Puerto en específico: `-p22`
* Puertos en específico: `-p22,80,443`
* Rango de puertos: `-p1-65535 `
* Puertos con protocolo UDP (igual se `-sU`): `-p U:53,111,137`
* Puertos con protocolo TCP (igual que `-sT`): `-p T:21-25,80,139,8080`
* Igual que `-sS`: `-p S:9 `
### -T
Se utiliza para establecer el nivel de agresividad del escaneo. Esta opción permite ajustar la velocidad de escaneo para adaptarse a diferentes situaciones y requisitos de análisis de seguridad.
Acepta valores numéricos del 0 al 5, donde 0 indica un escaneo más lento y más silencioso, y 5 indica un escaneo más rápido y agresivo.
### -Pn
### -v
### -n
### -oA
### Campo STATE
*
* Filtered: Nmap no pudo determinar si el puerto está abierto o cerrado, y no se puede afirmar con certeza si el puerto está en uso o no. Esto puede deberse a varias razones, como:
* El firewall del sistema objetivo está bloqueando el paquete enviado por Nmap.
* El sistema objetivo está desconectado o inaccesible.
* El paquete enviado por Nmap fue bloqueado por algún dispositivo de red en el camino entre Nmap y el sistema objetivo.
### Práctica
scanme.nmap.org
```bash
$ nmap scanme.nmap.org
Starting Nmap 7.80 ( https://nmap.org ) at 2023-04-18 22:06 -05
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.13s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp filtered smtp
80/tcp open http
9929/tcp open nping-echo
31337/tcp open Elite
Nmap done: 1 IP address (1 host up) scanned in 15.38 seconds
```
## Investigación en redes sociales
### Maltego
## Rastreo y perfilado de actores malintencionados
### Maltego
## Spiderfoot
Lanzamiento
```bash
$ python3 ./sf.py -l 127.0.0.1:5001
2023-04-18 22:07:08,313 [INFO] sf : Starting web server at 127.0.0.1:5001 ...
*************************************************************
2023-04-18 22:07:08,363 [WARNING] sf :
********************************************************************
Warning: passwd file contains no passwords. Authentication disabled.
Please consider adding authentication to protect this instance!
Refer to https://www.spiderfoot.net/documentation/#security.
********************************************************************
Use SpiderFoot by starting your web browser of choice and
browse to http://127.0.0.1:5001/
*************************************************************
```
El lanza una interfaz web en http://localhost:5001/




https://github.com/smicallef/spiderfoot
# Bibliografía
* man whois https://linux.die.net/man/1/whois
* Port Scanning Basics https://nmap.org/book/man-port-scanning-basics.html
* Nmap Cheat Sheet 2023: All the Commands, Flags & Switches https://www.stationx.net/nmap-cheat-sheet/
* NMAP Cheat Sheet https://www.interviewbit.com/nmap-cheat-sheet/
* Maltego Handbook for Cyber Threat Intelligence https://static.maltego.com/cdn/Handbooks/Maltego-Handbook-for-Cyber-Threat-Intelligence.pdf
* WHOIS and DNS Cheat Sheet https://cheatography.com/binca/cheat-sheets/whois-and-dns/
* What Are DNS Zone Transfers (AXFR) https://www.acunetix.com/blog/articles/dns-zone-transfers-axfr/