jueves, 9 de febrero de 2023

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

Instalar Herramientas Forence

Instalar Autopsy
  1. Download the latest epel-release rpm from
    http://dl.fedoraproject.org/pub/epel/7/x86_64/
  2. Install epel-release rpm:
    # rpm -Uvh epel-release*rpm
  3. Install sleuthkit rpm package:
    # yum install sleuthkit


Cargar carpetas compartidas VMWare

Para poder ver que carpetas reconoce linux, podemos utilizar el comando:

[root@localhost caso2-1]# vmware-hgfsclient
Scripts
CIFH
Casos


Luego para reconocer la carpeta utilizamos el comando:
[root@localhost caso2-1]# mount -t vmhgfs .host:/Casos /mnt/real
mount: unknown filesystem type 'vmhgfs'

En el caso de que no reconoce el filesystem podemos utilizar el siguiente comando:
/usr/bin/vmhgfs-fuse .host:/ /mnt/real -o subtype=vmhgfs-fuse,allow_other



miércoles, 14 de marzo de 2018

Comandos útiles en CMD de Windows

Comando para enviar la salida en un archivo nuevo:
d:\>dir /a > salida.txt

Para adicionar la salida de un comando a un archivo ya existente:
d:\>dir >> salida.txt

Comando para mostrar el contenido de un archivo txt sin iniciar el notepad:
d:\>type salida.txt

Comando para enviar la salida comando al portapapeles:
d:\>dir /a | CLIP

Comando para listar todos los archivos ocultos y de sistema
d:\>dir /a:h /s

Comando para buscar en todos los archivos un texto
find <TextoABuscar> archivo
ejm: find "Unit" *.txt

Para que indica el numero de lineas donde coincide la cadena de busqueda
find /C "Unit" *.txt