# Supervisión del rendimiento del sistema:
- Herramientas de monitorización en tiempo real.
- Herramientas de monitorización continuada.
- Herramientas de análisis del rendimiento.
- Tipos de sucesos: sucesos del sistema, sucesos de seguridad, sucesos de aplicaciones, etc.
- Registros de sucesos.
- Monitorización de sucesos.
- Gestión de aplicaciones, procesos y subprocesos.
- Monitorización de aplicaciones y procesos.
- Monitorización del rendimiento:
  - Monitor del sistema: histogramas, gráficos e informes.
  - Contadores y registros de seguimiento.
  - Programas acciones mediante las alertas. 

--------------

# Monitorizar servicios
## Analizar servicios con PowerShell
https://www.jesusninoc.com/2016/11/10/analizar-servicios-con-powershell/

---------
---------

# Supervisión del rendimiento del sistema:
- Herramientas de monitorización en tiempo real.
- Herramientas de monitorización continuada.
- Herramientas de análisis del rendimiento.
- Tipos de sucesos: sucesos del sistema, sucesos de seguridad, sucesos de aplicaciones, etc.
- Registros de sucesos.
- Monitorización de sucesos.
- Gestión de aplicaciones, procesos y subprocesos.
- Monitorización de aplicaciones y procesos.
- Monitorización del rendimiento:
  - Monitor del sistema: histogramas, gráficos e informes.
  - Contadores y registros de seguimiento.
  - Programas acciones mediante las alertas. 

--------------

# DLL
* Run PowerShell with rundll32. Bypass software restrictions https://github.com/p3nt4/PowerShdll
* https://github.com/jesusninoc/ClasesISO/blob/master/2018-04-13.md
* https://www.jesusninoc.com/2018/04/15/ejecutar-microsoft-coff-binary-file-dumper-dumpbin-exe-desde-powershell/

## Ejercicios de PowerShell: ver si zipfldr.dll se está ejecutando en el sistema
* https://www.jesusninoc.com/05/13/ejercicios-de-powershell-ver-si-un-fichero-dll-se-esta-utilizando-en-la-ejecucion-de-algun-proceso/

--------------------

# Integridad
## Comprobar si ha cambiado algún fichero utilizando la función hash SHA1
https://www.jesusninoc.com/2016/01/27/comprobar-si-ha-cambiado-algun-fichero-utilizando-la-funcion-hash-sha1/

## Ejercicio
### Detectar que ha cambiado una dll analizando el DNS
```PowerShell
# Buscar resolución en DNS
"jesusninoc.com/wmi.dll" > captura.log

gc .\captura.log | %{
        if ($_ -match "dll")
        {
            $_.split("/")[1]
        }
    }


# Localizar la posición de la dll en un listado de dll's
(gc .\posciones.txt)[(gc .\posciones.txt).IndexOf("luis")]
```

--------------------

# WMIC

## Listar actualizaciones y almacenar en un fichero html
```MS-DOS
wmic qfe list full /format:htable > hotfixes.htm
```

## Examples of WMIC commands for Windows .NET SERVER Family 
https://www.cs.cmu.edu/~tgp/scsadmins/winadmin/WMIC_Queries.txt

## Enable RDP remotely via #wmic on #Windows 2008 and above: 
```MS-DOS
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS !="") CALL SetAllowTSConnections 1
```

## WMIC.EXE Whitelisting Bypass - Hacking with Style, Stylesheets
https://subt0x11.blogspot.com.es/2018/04/wmicexe-whitelisting-bypass-hacking.html

## Living Off The Land Binaries And Scripts - (LOLBins and LOLScripts)
https://github.com/api0cradle/LOLBAS

## GTFOBins
GTFOBins is a curated list of Unix binaries that can be exploited by an attacker to bypass local security restrictions.
https://gtfobins.github.io/

--------------------

# Analizar datos en memoria

## Leer el contenido de un fichero en ASCII y representarlo en decimal
http://www.jesusninoc.com/2017/01/29/leer-el-contenido-de-un-fichero-en-ascii-y-representarlo-en-decimal/

## Crear un fichero de volcado de memoria de un proceso
http://www.jesusninoc.com/2016/03/04/crear-un-fichero-de-volcado-de-memoria-de-un-proceso/

## Buscar una cadena dentro de un fichero de volcado de memoria
http://www.jesusninoc.com/2016/03/13/buscar-una-cadena-dentro-de-un-fichero-de-volcado-de-memoria/

--------------------

# Red

## Enabling DNS Logging for Windows Server 2012
http://support.moonpoint.com/network/dns/windows/logging/srvr2012.php

## Mostrar información sobre las reglas del Firewall de Windows con PowerShell
```PowerShell
$f = New-object -comObject HNetCfg.FwPolicy2
$f.Rules | Select-Object name,applicationname,localports,remoteports | Out-GridView
```

## Display list of blocked ports
```PowerShell
$f = New-object -comObject HNetCfg.FwPolicy2
$f.rules |  where {$_.action -eq "0"} | select name,applicationname,localports
```

## Modificar datagramas UDP con SoftPerfect Network Protocol Analyzer
https://www.jesusninoc.com/2016/03/19/modificar-datagramas-udp-con-softperfect-network-protocol-analyzer/

## Building My Ideal Router For $50
https://blog.tjll.net/building-my-perfect-router/

## Automatizar con WinSCP
### Parameters for winscp.exe executable:
https://winscp.net/eng/docs/commandline

## Analizar datos en red
### La captura de tráfico 
http://www.elladodelmal.com/2018/03/amazon-dash-button-un-hack-para-enviar.html

## Compilation of commands, tips and scripts that helped me throughout Vulnhub, Hackthebox, OSCP and real scenarios
https://github.com/adon90/pentest_compilation

## Ejercicios sobre redes
- Detectar en la red el fabricante del gateway
  - https://www.jesusninoc.com/05/13/ejercicios-de-powershell-conocer-el-fabricante-del-dispositivo-gateway-de-nuestra-red/
- Detectar en red dispositivos
```PowerShell
(Get-NetNeighbor | Where-Object {$_.IPAddress -match "192.168"}).IPAddress
```
- Conexión entre alumnos para detectar dispositivos
- Conectarse utilizando protocolos de capa Aplicacion (SSH)
- Comprobar integridad de ficheros en carpetas remotas
- Carpetas compartidas con permisos
  - https://www.jesusninoc.com/2015/08/19/anadir-permiso-ntfs-a-una-carpeta/
- Conexión con sockets en Linux
  - https://github.com/jesusninoc/ClasesSeguridad/blob/master/2018-02-21.md
- Conexión con sockets en PowerShell
  - https://www.jesusninoc.com/2017/01/27/ejecutar-un-cmdlet-remotamente-en-un-equipo-utilizando-sockets-udp/
- Analizar el tráfico por red:
  - https://hackertarget.com/tshark-tutorial-and-filter-examples/
```MS-DOS
tshark -R "ip.addr == 192.168.0.1" -w f:\power\capture.cap
```
- Tcpdump Examples
  - https://hackertarget.com/tcpdump-examples/
- ¿Qué estoy imprimiendo?
- Crear un iventario de lo que tiene un equipo (conectar a varios equipos) y guardar la información en una carpeta compartida
```PowerShell
#Llamadas WMI
$ComputerSystem=Get-WmiObject Win32_ComputerSystem
$BaseBoard=Get-WmiObject Win32_BaseBoard
$BIOS=Get-WmiObject Win32_BIOS
$Processor=Get-WmiObject Win32_Processor
$Battery=Get-WmiObject Win32_Battery
 
#Crear un objeto con todos los datos sobre el hardware
[PSCustomObject]@{
 Model = $ComputerSystem.Model
 ManufacturerBoard = $BaseBoard.Manufacturer
 BIOSVersion = $BIOS.SMbiosbiosversion
 BIOSSerialNumber = $BIOS.serialnumber
 ManufacturerProcessor=$Processor.Manufacturer
 MaxClockSpeed=$Processor.MaxClockSpeed
 DeviceIDBattery=$Battery.DeviceID.trim()
}
```
- Analizar las conexiones abiertas en un equipo
- Fuerza bruta
  - https://github.com/jesusninoc/ClasesISO/blob/master/2018-04-17.md#simular-una-fuerza-bruta-mediante-peticiones-http-desde-powershell-utilizando-el-m%C3%A9todo-get
- Analizar conexiones de red analizando el tráfico de red y relacionarlo con hilos, procesos y servicios
```PowerShell
cd "C:\Program Files\Wireshark\"
tshark -r capture.pcap -Y "udp or tcp"
gc .\todo.txt |%{ $_}
```
```PowerShell
Get-NetTCPConnection | Where-Object {$_.RemotePort -eq $_.split(" ")[5]}
```
```PowerShell
Get-NetTCPConnection | select OwningProcess | %{Get-Process -id $_.OwningProcess}
```
```PowerShell
netstat -ano
```
- Mostrar los hilos que se están ejecutando en relación con los servicios y los procesos
  - https://www.jesusninoc.com/2015/10/28/mostrar-los-hilos-que-se-estan-ejecutando-en-relacion-con-los-servicios-y-los-procesos/
- Mostrar los hilos que se están ejecutando en relación con los servicios, los procesos y los puertos abiertos TCP
  - https://www.jesusninoc.com/2017/04/04/mostrar-los-hilos-que-se-estan-ejecutando-en-relacion-con-los-servicios-los-procesos-y-los-puertos-abiertos-tcp/
- Mostrar los hilos que se están ejecutando en relación con los servicios, los procesos y los puertos abiertos UDP
  - https://www.jesusninoc.com/2017/03/11/mostrar-los-hilos-que-se-estan-ejecutando-en-relacion-con-los-servicios-los-procesos-y-los-puertos-abiertos-udp/
- Buscar direcciones IP en la red local y realizar una consulta DNS
```PowerShell
(Get-NetNeighbor).IPAddress | Select-String "192.168.1." | % {
Resolve-DnsName $_
}
```
- Resolver la siguiente situación
  - https://github.com/jesusninoc/ClasesSeguridad/blob/master/2018-02-14.md
- Analizar DLL en un equipo remoto
  - https://www.jesusninoc.com/04/19/listar-funciones-exportadas-de-un-archivo-dll-con-dumpbin-desde-powershell/

-----------------

## Packet capture on Windows without a kernel driver
https://github.com/nospaceships/raw-socket-sniffer

## Relación entre puertos UDP y procesos (construir un objeto con propiedades personalizadas)
https://www.jesusninoc.com/2018/05/02/relacion-entre-puertos-udp-y-procesos-construir-un-objeto-con-propiedades-personalizadas/

## Relación entre puertos TCP y procesos (construir un objeto con propiedades personalizadas)
https://www.jesusninoc.com/2018/05/03/relacion-entre-puertos-tcp-y-procesos-construir-un-objeto-con-propiedades-personalizadas/

## Conectarse a una carpeta compartida con PowerShell
https://www.jesusninoc.com/2017/06/14/conectarse-a-una-carpeta-compartida-con-powershell/

## Instalar remotamente un paquete MSI
https://www.jesusninoc.com/2017/05/27/instalar-remotamente-un-paquete-msi/

## Enabling Remoting
There are many ways how cmdlets can get remote information from another computer. Here are just a few:

```PowerShell
# try and connect to this computer
# (adjust it to a valid name in your network) 
$destinationServer = "SERVER12"
 
# PowerShell remoting 
$result1 = Invoke-Command { Get-Service } -ComputerName $destinationServer
 
# built-in 
$result2 = Get-Service -ComputerName $destinationServer
$result3 = Get-Process -ComputerName $destinationServer
```

If you’d like to open up the most commonly used remoting techniques on a test machine, run these lines from a PowerShell with elevated privileges:

```PowerShell
netsh firewall set service remoteadmin enable 
Enable-PSRemoting -SkipNetworkProfileCheck -Force
```
## Lateral Movement Using WinRM and WMI
https://redcanary.com/blog/lateral-movement-winrm-wmi/

## NO WIN32_PROCESS NEEDED – EXPANDING THE WMI LATERAL MOVEMENT ARSENAL
https://www.cybereason.com/blog/wmi-lateral-movement-win32

## Get-WmiObject
http://community.idera.com/powershell/powertips/b/tips/posts/wmi-quick-primer-part-2

Here are two example calls that both retrieve information about file shares from a remote system (make sure you adjust the computer name):
```PowerShell
Get-WmiObject -Class Win32_Share -ComputerName sr0710 
Get-CimInstance -ClassName Win32_Share -ComputerName sr0710
```

## Get-CimInstance
While Get-WmiObject always uses DCOM as a transport protocol, Get-CimInstance uses WSMan (a webservice-type of communication). Most modern Windows systems support WSMan, but if you need to contact older servers, they may only respond to DCOM, thus Get-CimInstance may fail.

Get-CimInstance can use session options, however, that provide great flexibility, and allow you to choose the transport protocol. In order to use DCOM (just like Get-WmiObject), do the following:

```PowerShell
$options = New-CimSessionOption -Protocol Dcom 
$session = New-CimSession -ComputerName sr0710 -SessionOption $options
$sh = Get-CimInstance -ClassName Win32_Share -CimSession $session 
Remove-CimSession -CimSession $session
```

Here is an example illustrating how the same session is used for two queries:
http://community.idera.com/powershell/powertips/b/tips/posts/wmi-quick-primer-part-3
```PowerShell
# create the session 
$options = New-CimSessionOption -Protocol Wsman 
$session = New-CimSession -ComputerName sr0710 -SessionOption $options
 
# reuse the session for as many queries as you like 
$sh = Get-CimInstance -ClassName Win32_Share -CimSession $session -Filter 'Name="Admin$"' 
$se = Get-CimInstance -ClassName Win32_Service -CimSession $session
 
# remove the session at the end 
Remove-CimSession -CimSession $session
```

## Packet generator
A packet generator or packet builder is a type of software that generates random packets or allows the user to construct detailed custom packets. Depending on the network medium and operating system, packet generators utilize raw sockets, NDIS function calls, or direct access to the network adapter kernel-mode driver.

|Title|Author|OS|Interface|License|
|---|---|---|---|---|
AnetTest|Anton aka kronos256|Windows, Unix|CLI|GPL
Bit-Twist|Addy Yeow Chin Heng|Windows, Linux, BSD, Mac OS X|CLI|GPLv2
Cat Karat packet builder|Valery Diomin, Yakov Tetruashvili|Windows|GUI|Packet Builder License
Colasoft Packet Builder|Colasoft|Windows|GUI|Packet Builder License: Freeware
CommView Packet Generator |TamoSoft|Windows|GUI|Proprietary EULA
IP Sorcery|Josiah Zayner|Unix|CLI and GUI|GPL
Nemesis|Jeff Nathan|Windows, Unix|CLI|BSD
Ostinato|Srivats P|Windows, Linux, BSD, Mac OS X|GUI and API|GPLv3
Packet Construction Set|George Neville-Neil|Linux, BSD, Mac OS X|CLI|BSD-like
Packet Sender|Dan Nagle|Windows, Linux, Mac OS X|CLI and GUI|GPLv2
Pktgen|Linux Foundation|Linux|CLI|GPLv2
packETH|Miha Jemec aka jemcek|Linux, Windows|GUI|GPLv2
pierf|Pieter Blommaert|Windows(Cygwin)/Linux|CLI|free BSD
rain|Michael Behan|Linux, BSD|CLI|free GPLv2
Scapy|Philippe BIONDI|Linux/Unix/Windows|CLI|GPLv2
targa3|Mixter|Linux, Unix|CLI|?
UMPA|Adriano Monteiro Marques|Cross-platform (Python)|?|GPLv2
trafgen|Daniel Borkmann|Linux|CLI|GPLv2
xcap|cxxxap|Windows|GUI|Free
Simple Packet Sender (SPS)|h0h1r4um|Linux|GUI|GPLv3
WARP17|Juniper Networks|Linux|CLI and API|BSD
Wirefloss|Wirefloss|Web page|GUI|Free

## Modificar paquetes
### Modificar la dirección IP de origen en mensajes UDP con SoftPerfect Network Protocol Analyzer
https://www.jesusninoc.com/2016/04/02/modificar-la-direccion-ip-de-origen-en-mensajes-udp-con-softperfect-network-protocol-analyzer/
### Modificar datagramas UDP con SoftPerfect Network Protocol Analyzer
https://www.jesusninoc.com/2016/03/19/modificar-datagramas-udp-con-softperfect-network-protocol-analyzer/
### Polymorph: Modificando paquetes de red en tiempo real. Inyectando JavaScript en peticiones HTTP
http://www.elladodelmal.com/2018/04/polymorph-modificando-paquetes-de-red.html
http://www.elladodelmal.com/2018/04/polymorph-modificando-paquetes-de-red_30.html
http://www.elladodelmal.com/2018/05/polymorph-modificando-paquetes-de-red.html

## Archivos sin conexión
https://answers.microsoft.com/es-es/windows/forum/windows_10-files/archivos-de-red-sin-conexi%C3%B3n-win10-pro/db125e74-b42a-4fac-948f-4b66bbd00a12

## VPN
### Always On VPN Windows 10 Device Tunnel Step-by-Step Configuration using PowerShell
https://directaccess.richardhicks.com/2017/12/11/always-on-vpn-windows-10-device-tunnel-step-by-step-configuration-using-powershell/

### Dis root
https://disroot.org/en

## Security
### Get things from one computer to another, safely
This package provides a library and a command-line tool named wormhole, which makes it possible to get arbitrary-sized files and directories (or short pieces of text) from one computer to another. The two endpoints are identified by using identical "wormhole codes": in general, the sending machine generates and displays the code, which must then be typed into the receiving machine.
* https://github.com/warner/magic-wormhole
* https://magic-wormhole.readthedocs.io/en/latest/welcome.html#example

### Ejecutar un cmdlet remotamente en un equipo utilizando sockets UDP
https://www.jesusninoc.com/2017/01/27/ejecutar-un-cmdlet-remotamente-en-un-equipo-utilizando-sockets-udp/
