martedì 26 agosto 2014

IptabLes (2)

Dopo quanto visto nel precedente post, ho provato un po' a divertirmi con IptabLes

Le dimensioni dei file coinvolti sono piuttosto notevoli
.IptabLes 1103207 bytes
.IptabLex 722392 bytes

con il comando file si vede che il file non e' stato strippato

IptabLes: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, from '@%ebx', not stripped 

IptabLex: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, from '@%ebx', not stripped

inoltre entrambi sono linkati staticamente (il che giustifica le dimensioni in quanto si portano dietro tutte le librerie di cui hanno bisogno)

mediante il comando strings si vede che il programma non e' criptato
-----------------------------
rm -f %s
/proc/self/exe
GETFILE_%08X
http://www.yahoo.com.http://www.baidu.com.http://www.china.com.http://www.ifeng.com
abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
/proc
/proc/%s/exe
/delxxaazz
/rc.d/r
/etc%sc%d.d/S55IptabLes
/delallmykkk
/delallmykkk>/dev/null
cp %s %s>/dev/null
/etc/rc.d/init.d/IptabLes
/etc/rc.d/IptabLes
/boot/IptabLes
%d.%d.%d
/boot/.IptabLes
/usr/.IptabLes
xxxx
#!/bin/sh
exit 0
#!/bin/sh
if [ -z $1 ] ; then
ps -f -C .IptabLes |grep .IptabLes | awk '{print $3}' | xargs $0 2
ps -f -C .IptabLes |grep .IptabLes | awk '{print $3}' | xargs $0 2
ps -f -C .IptabLes |grep .IptabLes | awk '{print $2}' | xargs $0 2
ps -f -C .IptabLes |grep .IptabLes | awk '{print $2}' | xargs $0 2
ps -axu | grep .IptabLes | awk '{print $2}' |xargs kill -9
ps -axu | grep .IptabLes | awk '{print $2}' |xargs kill -9
ps -C .IptabLes | xargs kill -9
ps -C .IptabLes | grep .IptabLes |xargs kill -9
rm -f /boot/.stabip
rm -f /boot/.IptabLes
rm -f /etc/rc.d/init.d/IptabLes
rm -f /boot/IptabLes
rm -f /tmp/IptabLes
rm -f /usr/IptabLes
rm -f /usr/.IptabLes
rm -f /boot/.IptabLes
rm -f /.IptabLes
rm -f /boot/IptabLes
rm -f /IptabLes
rm -f /etc/rc.d/rc4.d/*IptabLes
rm -f /etc/rc.d/rc1.d/*IptabLes
rm -f /etc/rc.d/rc2.d/*IptabLes
rm -f /etc/rc.d/rc3.d/*IptabLes
rm -f /etc/rc.d/rc0.d/*IptabLes
rm -f /etc/rc.d/rc5.d/*IptabLes
rm -f /etc/rc.d/rc6.d/*IptabLes
rm -f /etc/init.d/IptabLes
rm -f /etc/rc4.d/*IptabLes
rm -f /etc/rc1.d/*IptabLes
rm -f /etc/rc2.d/*IptabLes
rm -f /etc/rc3.d/*IptabLes
rm -f /etc/rc0.d/*IptabLes
rm -f /etc/rc5.d/*IptabLes
rm -f /etc/rc6.d/*IptabLes
rm -rf "$0"
else
if [ -z $2 ] ; then
exit
else
if [ 1 -ne $2 ] ; then
kill -9 $2
exit
#!/bin/bash
sleep 3
kill %d
sleep 1
rm -f %s
rm -rf "$0"
sh /delxxaazz
/proc/net/dev
face
rrrrrrss
FATAL: exception not rethrown
/proc/sys/kernel/version
/proc/sys/kernel/osrelease
FATAL: kernel too old
FATAL: cannot determine kernel version
/dev/full
set_thread_area failed when setting up thread-local storage
UUUU
?3333
/bin/sh
exit 0
LIBC_FATAL_STDERR_
/dev/tty

-----------------------------
si legge anche chiaramente dove vengono messi i file ed alcuni comandi di shell
Francamente non ho esperienza in Assembler ma mediante il decompilatore RecStudio e' possibile leggere in chiaro il nome delle funzioni tra cui si vede chiaramente SynFlood e DNSFlood che corrisponde a quanto fa effettivamente il programma


Dalla lettura delle stringhe sembra che il programma sia stato compilato su una RedHat con un compilatore GCC 4.1.2 (che se fosse corretto risulta essere una versione piuttosto vecchiotta)