jueves, 9 de febrero de 2023

Solucionar problemas de conectividad

 Cuando tengamos un problemas de conectividad, en otras palabras no tenemos Internet o comunicacion con un servidor u otro equipo seguir los siguientes pasos:

Paso1: Verificar que la interface se encuentra conectada

Si te encuentras en VMWare o VirtualBox, verificar que la interface se encuentra en un modo, por ejemplo bridge o NAT.

Si estas en un equipos fisico verificar que la tarjeta de red este prendido las luces de la misma.

Paso2: Verificar la direccion IP

Es importante verificar que cuentas con una direccion IP que se encuentre dentro de red a que desee acceder, para ello ejecutar los siguientes comandos.

En Linux puede ejecutar cualquier de los siguientes comandos

ifconfig
ip addr
hostname -I
En Windows
ipconfig
En caso de no tener una IP valida corrija el error solicitando una IP al DHCP o asignando de forma estatica a traves del siguiente enlace: https://direcfox-msv.blogspot.com/2023/02/comandos-basicos-en-kali-linux.html#IP

Paso 3: Verifique que tiene conectividad hacia Internet
Para verificar si puede acceder a Internet puede hacer ping a la dirección de algún servidor en Internet, por ejemplo nosotros vamos a hacer ping a las direcciones IP de los DNS de Google

ping 8.8.8.8
En caso no se logre verique pueda hacer ping a puerta de enlace, puede ser el caso que el error sea de su proveedor de Internet
Para determinar la direccion IP de su puerta de enlace ejecute los siguientes comandos

En Linux puede ejecutar cualquier de los siguientes comandos

route
ip route
nmcli device show
En Windows
ipconfig /all
En caso de tener la direccion de la puerta de enlace erronea utilizar el siguiente enlace:

Paso 4: Verifique que las direcciones IP del servidor DNS sean las correctas
En caso de cumplir con los pasos anteriores y aun asi no poder navegar por Internet, verifique que la resolucion de URL a la pagina que desea acceder sea la correcta.
Para ello ejecute los siguientes comandos:
Probar resolución de una pagina a traves de PING 
En Windows o Linux utilizar el mismo comando
ping www.google.com
Al ejecutar el comando debe de aparecer una dirección IP Publica valida

En caso no aparezca utilizar el siguiente comando para comprobar a donde se esta realizando las consultas.

Puede ocurrir el caso que el servidor DNS de tu organizacion tenga algun problema y no este resolviendo, utilizar los DNS de google es recomendable por que son estables.
Para cambiar las direcciones DNS en tu equipo Linux utilizar el siguiente enlace: 





Comandos basicos en Kali Linux

Cambiar idioma

Para cambiar idioma de forma temporal a español ejecute el siguiente comando.

setkxbmap es

CONFIGURACION DE TARJETA DE RED

Solicitar IP al DHCP y mostrar los mensajes

dhclient -v
Mostrar informacion de las tarjetas

nmcli
Mostrar informacion detallada de la tarjeta

nmcli device show



Configurar una IP de forma temporal

ip addr add 192.168.1.1/24 dev ens33

O

ifconfig ens33 192.168.1.1/24
Eliminar una dirección IP

ifconfig ens33 0.0.0.0
O

ip addr del 192.168.1.1 dev ens33

ip route add default via 192.168.1.1
Borrar la puerta de enlace o default gateway

ip route del default via 192.168.1.254

Crear una ruta

ip route add 10.8.0.0/24 via 192.168.1.2

Borrar una Ruta

ip route del 10.8.0.0/24 via 192.168.1.2

Cambiar una ruta

ip route chg 10.8.0.0/24 via 192.168.1.3

Verificar y cambiar los servidores DNS

nano /etc/resolv.conf

Verificar que tienes los DNS respectivos para salir a Internet, puedes usar los genericos de Google, en caso de no tener estas direcciones adicionelo en el archivo correspondiente.

nameserver 8.8.8.8
nameserver 8.8.4.4




AWS - Conexión mediante AWS CLI: Iniciar y Detener Instancias

Conexión mediante AWS CLI

Primero descargar e instalar.
Descargar el instalar para Windows desde la siguiente pagina:
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html

Ahora configuramos el acceso del usuario a través de IAM, para ello ingresamos a:
https://console.aws.amazon.com/iam, seleccionamos usuarios y por ultimo Añadir Usuarios.


Ahora ingresamos los datos del usuario, seleccionamos el segundo check, como el de la imagen para crear para administrar a traves del CLI, el ultimo check lo des habilitamos para que no solicite cambiar la contraseña. 

Ahora establecemos los permisos, para ello podemos crear un nuevo grupo con los permisos correspondientes, copiar de un usuario existente o establecer permisos específicos, esta es la opción que vamos a utilizar.


Ahora debemos de establecer las etiquetas que ayuden al monitoreo, pero es opcional.

Ahora nos muestra el resumen de lo configurado

Por ultimo confirmamos lo realizado.

Ahora ya tenemos el usuario creado, para generar el ID y la contraseña seleccione el usuario y nos ubicamos en la lengüeta Credenciales de Seguridad y hacemos clic en el botón Crear una Credencial de Acceso

Ahora descargue le archivo CSV para guardar las credenciales, esto solo se puede crear una ves si pierde esa información tendrá que volver a crearlo.

Ahora vamos a configurar en la terminal del usuario, desde el ejecutor de comando de Windows en modo administrador ingrese el comando
aws configure

Ahora AWS solicitara que ingrese los siguientes datos:
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: 
Default output format [None]: 

Estos datos los extraemos del CSV del paso anterior descargado.

Para probar podemos utilizar el comando
aws s3 ls

Tambien podemos iniciar o detener instancias de MV de EC2, para ello necesita el ID de la instancia.

D:\aws>aws ec2  start-instances --instance-ids i-078dd8ebd39fb53fc

Para detener instancia.
D:\aws>aws ec2  stop-instances --instance-ids i-078dd8ebd39fb53fc



Referencias:




Gestionar ventanas de consola con TMUX en Linux

Cambiar idioma

Para cambiar idioma de forma temporal a español ejecute el siguiente comando.

setxkbmap es


Gesto de Multiples pantallas

tmux: Terminal Multiplexer

TMUX es un terminal que permite lanzar y gestionar multiples pantallas dentro de una una sesion de consola como SSH/Telnet, Terminal GUI.

Instalacion

Para instalar ejecute los siguientes comandos segun la distribucion de Linux con la que este trabajando.

DistribuciónComando
CentOS, RedHat, Fedorayum install tmux
Debian, Ubuntu, Mintapt-get install tmux
Gentooemerge tmux

Iniciar

Para iniciar primero abra una consola y ejecute el siguiente comando.

#tmux

Lista de comandos utilizados

Para ejecutar un comando primero presione el conjunto de teclas Ctrl + B, luego suelte las teclas y presione la accion correspondiente, por ejemplo c para crear una nueva ventana.



Accion Comando
Crear una nueva ventanaCtrl+B c
Cambiar el nombre a una ventanaCtrl+B ,
Cambiar el nombre de la sesiónCtrl+B #
Cambiar a la ventana siguiente Ctrl+B n
Cambiar a la ventana anteriorCtrol+B p
Forzar cierre de la ventana actual y sus panelesCtrol+B &
Cerrar todas las ventanas y panelesexit o Ctrl+D
Dividir verticalmente la ventana actual en dos panelesCtrol+B /
Dividir horizontalmente la ventana actual en dos panelesCtrol+B -
Moverse al panel de arribaCtrol+B Cursor-Arriba
Moverse al panel de abajoCtrol+B Cursor-Abajo
Moverse al panel de la izquierdaCtrol+B Cursor-Izquierda
Moverse al panel de la derechaCtrol+B Cursor-Derecha
Matar panel actualCtrol+B x
Redimensionar panel actual en 1 unidadCtrol+B Ctrl-Cursores
Redimensionar panel actual en 5 unidadesCtrol+B Alt-Cursores
Para cambiar de sesión puede utilizar los siguientes comandos
AccionComando
Crear una nueva ventanaCtrl+B s
Luego mueva el cursor para posicionarse sobre la sesión que desea utilizar.


Personalizar los comandos en Tmux
Por defecto TMUX buscar primero el archivo de configuracion en la carpeta /etc/tmux.conf, al no encontrarlo busca en ~/.tmux.conf.
En mi caso instale la vesión la version 3.3, no se encontraba en ninguna de esas ubicacion asi que lo tube que crear en la siguiente direccion:
    touch ~/.tmux.conf
Luego editar con 
    vi ~/.tmux.conf
Un problema que encontre es que las teclas Ctrl y B se encuentran muy separadas, lo que originaba una molestia al intentar ejecutar ambas teclas, es por eso que se puede personalizar para usar el conjunto de teclas Ctrl + A o ambos.

# Ademas de Ctrl+A, agregamos un atajo de teclado tipo screen (Ctrl+A)
# Para tmux >= 1.6:
#set-option -g prefix C-a
#set-option -g prefix2 C-b

# Empezar la numeración de las ventanas creadas en 1 (la primera ventana)
set -g base-index 1
Para utilizar Alt en ves de Ctrl puede reemplazar el comando anterior por 
# Para tmux >= 1.6:
#set-option -g prefix M-a
#set-option -g prefix2 M-b

# Empezar la numeración de las ventanas creadas en 1 (la primera ventana)
set -g base-index 1
Para permitir que nos podamos desplazar con el mouse adicionamos esta linea en el archivo de configuración
# Empezar la numeración de las ventanas creadas en 1 (la primera ventana)
set -g mose on
En Linux ciertos simbolos son complicados sacar en caso no tengamos el teclado bien configurado, tmux nos permite cambiar las acciones por otros simbolos, por ejemplo vamos a cambiar la forma de como abrimos el panel horizontal y vertical.
# Para cambiar la tecla de como abrir los paneles: | and -
unbind %
bind | split-window -h
bind - split-window -v



viernes, 25 de mayo de 2018

Generando un Script de consulta de IP PowerShell para resolver las IP conectadas

Bueno primero tenemos que habilitar la ejecución de script de Powershell:
Verificamos como esta la política:
PS D:\> Get-ExecutionPolicy
Restricted (Resultado, significa que tenemos bloqueada esta política)

Cambios el acceso para que sea sin restricciones:
PS D:\> Set-ExecutionPolicy Unrestricted

Esta política cambia para todos los usuarios, puede ser que te de problemas, entonces debemos aplicarlo solo al usuario actual:

PS D:\> Set-ExecutionPolicy -Scope CurrentUser Unrestricted

Ahora para crear un Script tenemos que conocer algunos comandos importantes:
Foreach, recorre una array, informacion sobre loops
if(p1 -ne p2), condicional que evalua que p1 sea diferente a p2
Para conocer mas operadores de comparacion utilizar el siguiente enlace
if(p1 -And p2), condicional que evalua p1 and p2, también se puede usar -Or
try{}catch{}, ejecuta un proceso y se ocurre un error lo envía a catch
Para conocer como manipular variables y array siguiente enlace

Vamos a utilizar la función Get-NetTCPConnection, mas información
PS D:\> Get-NetTCPConnection
Esta función devolverá todas las conexiones TCP que tiene su equipo, la información mostrada es básica, existe mas información que nos puede mostrar, el siguiente comando da mas detalle:
Get-NetTCPConnection | Format-List -Property *

Para mostrar la informacion en columnas se tiene que exportar al excel, el siguiente comando permite eso:
Get-NetTCPConnection | Export-Csv -Path "data.csv"

Para poder filtrar solo tenemos que seleccionar una columna e indicar el valor del filtro:
PS D:\> Get-NetTCPConnection -RemotePort 443

Para personalizar la cantidad de columnas que va a tener se puede hacer con el parámetro select
PS D:\> Get-NetTCPConnection -RemotePort 443 | select RemoteAddress, RemotePort, State

Para hacer filtros puede hacer de la siguiente forma, trabajando con el nombre de los encabezados

PS D:\> Get-NetTCPConnection -RemotePort 443 |?  {($_.RemoteAddress -ne "0.0.0.0") -and ($_.RemoteAddress -ne "::")}  | select RemoteAddress, RemotePort, State



param (
  [string]$ip = $(throw "ip is required.")
 )

$ipParts = $ip.Split('.')
[array]::Reverse($ipParts)
$ipParts = [string]::Join('.', $ipParts)

Function Get-DnsEntry($iphost){
$subnetIP = Get-NetTCPConnection | Select RemoteAddress
foreach ($IPRemote in $subnetIP){
$iphost = $IPRemote.RemoteAddress
if(($iphost -ne "127.0.0.1") -And ($iphost -ne "0.0.0.0") -And ($iphost -ne "::") ){
try { [System.Net.Dns]::GetHostEntry($iphost)
}catch{
Write-Host $iphost }
}
}
}



$conecciones= Get-NetTCPConnection | ? {($_.RemoteAddress -ne "0.0.0.0") -And ($_.RemoteAddress -ne "::")} | Select-Object RemoteAddress, LocalPort, RemotePort, OwningProcess -Unique | Sort-Object -Property OwningProcess
foreach($coneccion in $conecciones) {Get-Process -PID $coneccion.OwningProcess | select ProcessName, Id, @{Name ="RemoteAddr";Expression={$coneccion.RemoteAddress}}, @{Name ="LocalPort";Expression={$coneccion.LocalPort}}}


Referencias Bibliográficas:
https://jongrassley.wordpress.com/2016/09/22/get-nettcpconnection/
https://stackoverflow.com/questions/39630404/inner-join-in-powershell-without-sql




jueves, 26 de abril de 2018

Abriendo archivos desde una imagen

Primero abrimos una imagen y visualizamos su contenido:
fls -f ext2 -m "/" -r imagen.dd
0|/lost+found|11|d/drwx------|0|0|12288|1254232453|1254232453|1254232453|0
0|/pos39.jpg|12|r/rrw-r--r--|0|0|37947|1254232606|1254232501|1254232501|0
0|/bbdd1|13|r/rrw-------|0|0|3145728|1254235683|1254232936|1254235733|0
0|/arch2 (deleted)|0|r/----------|0|0|0|0|0|0|0
0|/$OrphanFiles|28113|V/V---------|0|0|0|0|0|0|0
0|/$OrphanFiles/OrphanFile-14 (deleted)|14|-/rrw-r--r--|0|0|57|1254233933|1254233909|1254233942|0

Podemos visualizar que tenemos una imagen en inodo 12, para ver su contenido utilizamos el siguiente comando:
#istat -f ext2  imagen.dd 12 
inode: 12
Allocated
Group: 0
Generation Id: 2783857707
uid / gid: 0 / 0
mode: rrw-r--r--
size: 37947
num of links: 1

Inode Times:
Accessed:    2009-09-29 08:56:46 (PET)
File Modified: 2009-09-29 08:55:01 (PET)
Inode Modified: 2009-09-29 08:55:01 (PET)

Direct Blocks:
1025 1026 1027 1028 1029 1030 1031 1032
1033 1034 1035 1036 1038 1039 1040 1041
1042 1043 1044 1045 1046 1047 1048 1049
1050 1051 1052 1053 1054 1055 1056 1057
1058 1059 1060 1061 1062 1063

Indirect Blocks:
1037

El inodo 12 nos indica que tiene bloques directos e indirectos. Ahora como sabes que es una imagen por que podemos consultar la cabecera del primer bloque.
para ello utilizamos el comando:

#blkcat -f ext2 imagen.dd 1025 |  hexdump -C
00000000  ff d8 ff e0 00 10 4a 46  49 46 00 01 01 00 00 01  |......JFIF......|
00000010  00 01 00 00 ff db 00 43  00 05 03 04 10 10 0f 10  |.......C........|

Los primeros cuatro números hexadecimal nos indica que tipo de archivo es:
ff d8 ff e0  pertenece a una imagen, esto se puede consultar en la siguiente tabla.
https://www.welivesecurity.com/la-es/2015/10/01/extension-de-un-archivo-cabeceras/


Ahora que sabemos que es una imagen podemos extraer todos los bloques al llamar directamente al inodo.
 icat -f ext2  imagen.dd 12 > imagen.jpg


Para poder extraer el nombre del archivo podemos utilizar el siguiente comando:
# ffind -f ext2 imagen.dd 12
/pos39.jpg






martes, 24 de abril de 2018

Comando utiles

File

File determina el tipo de un archivo y te imprime en pantalla el resultado. No hace falta que el archivo tenga una extensión para que File determine su tipo, pues la aplicación ejecuta una serie de pruebas sobre el mismo para tratar de clasificarlo.
Ejecutarlo sería tan sencillo como:
$ file un_archivo_de_texto.txt

Ln

Ln es una aplicación que permite crear enlaces a los archivos, tanto físicos (hard links) como simbólicos (soft links). En pocas palabras, un enlace simbólico es como un acceso directo en Windows o un alias en OSX mientras que un enlace físico es un nombre diferente para la misma información en disco.
Para crear un enlace físico ejecutamos:
$ ln archivo_origen nombre_enlace

Y para crear un enlace simbólico:
$ ln -s archivo_origen nombre_enlace