Страница 1 из 1
дизасемблировать бинарник
Добавлено: 2009-10-26 2:03:40
paix
у юзера сперли пароль на фтп, и стали загружать всякие вредоносные бинарные проги.
Посредством php (system, etc) эту гадость запускают. Это все происходит быстро, скрипт загружает, запускает и сразуже удаляет.
при помощи нехитрых телодвижений аля chflags -R sappnd я эту гадость выловил

но не знаю как ее толком разобрать по кусочкам. Интересно таки
может кто подскажет механизм,
ссылки также приветствуются.
пример такого малваере ниже:
http://paix.org.ua/tmp/malware.pl_
ps. пробовал посмотреть портовым libdisasm
но скилов по теме не хватило чтобы с наскоку -)
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 2:21:43
paradox
ну там не на С++ и даже не на С
там два варианта
1) та меил варя писана на ассемблере и както упакована
2) писана на perl'e и скомпилирована перл компилеров в ELF выполняемый файл
вовсяком случае она из себя запускает /usr/bin/perl
и чтото декриптует или распаковывает толи через пайпы толи через /tmp/
сказать сложно
если это для фрибсд то запусти ее через truss
а /usr/bin/perl можно как то подставить туда чтото другое вместо перла
и оно думаю будет пробовать тому выдуманому перлу подставить декрипченый или распакованый поток уже нормальной перл программы
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 8:24:54
ProFTP
ну вот я нашел модуль
http://search.cpan.org/~rurban/B-C-1.04 ... sembler.pm
там есть еще какой-то B::C::Disassembler
установить этот модуль
написать
perld.pl
Код: Выделить всё
use Disassembler qw(print_insn);
my $fh = new FileHandle "<$ARGV[0]";
disassemble_fh($fh, \&print_insn);
выполнить:
и посмотреть что будет...
(у меня этот модуль не стоит, я не пробовал, чтобу дет не знаю)
тут вот еще
http://search.cpan.org/search?m=all&q=disassemble&s=1
вот это по-моиму оно
http://search.cpan.org/~bobmath/Disasse ... .13/X86.pm
но оно должно тебе выдать в asm/Си, а не в перле
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 11:45:13
paix
paradox писал(а):ну там не на С++ и даже не на С
там два варианта
1) та меил варя писана на ассемблере и както упакована
2) писана на perl'e и скомпилирована перл компилеров в ELF выполняемый файл
вовсяком случае она из себя запускает /usr/bin/perl
и чтото декриптует или распаковывает толи через пайпы толи через /tmp/
сказать сложно
если это для фрибсд то запусти ее через truss
а /usr/bin/perl можно как то подставить туда чтото другое вместо перла
и оно думаю будет пробовать тому выдуманому перлу подставить декрипченый или распакованый поток уже нормальной перл программы
фряха фряха...
я к работающим процессам этой гадости цеплялся через truss, оно там ниче толкового не делало, и постоянно сыпало
select
gettimeofday..
прога кстати открывала сокеты по udp, а также пыталась на 80ый забиндится, tcp.
на счет идеи подставить что-то вместо перлятины - забавный вариант, спасибо )
ProFTP, спасибо.
выкрою время попробую....
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 11:52:56
ProFTP
в примере я не посмотрел, B::Disassembler это для байт кода, оно не подойдет...
а ELF формат это только машинный-код?
perl, python код можно скомпилировать как обычную Си программу (есть скрипт для этого стандартный, не большой perlcc)
т.е. это как обычная Си программа, наверное...
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 11:54:47
paradox
проверь
без наличия перла эта гадость работать поидеи не должна
и кстати если это программа скомпилирована на перле
то я думаю должна какая то быть приблуда котрая ее же и декомпилирует обратно в перл
а ELF это только машинный-код?
да
perl, python код можно скомпилировать как обычную Си программу (есть скрипт для этого стандартный)
угу
а как обратно? должны быть готовые утилиты
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 11:56:35
ProFTP
paradox писал(а):
а как обратно? должны быть готовые утилиты
у тебя perl стот?
набери в консоле:
там кстати, про байт написано что-то...
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 11:59:41
paradox
perlcc это скомпилить из pl в elf
а я говорил что должно быть обратно
из elf в pl
если этот elf перловский
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 12:00:50
ProFTP
paradox писал(а):
угу
а как обратно? должны быть готовые утилиты
там есть команды упаковщики
http://perldoc.perl.org/functions/unpack.html , но не упаковщики которые делают бинарный файл
а gdb не получиться этот файл посмотреть?
или objdump?
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 12:02:00
ProFTP
в Си можно заинклудит же perl как библиотеку и использовать его в Си
ты уверен что elf перловский?
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 12:04:55
paradox
ты уверен что elf перловский?
не уверен
но то что там в том elf делаеться
1) открываються пайпы
2) открываеться /usr/bin/perl
3) декриптуеться/депакуеться поток символов с того elf файла и пишеться в пайп для /usr/bin/perl
наводит на мысль что этот elf скомпилирован perlcc
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 12:08:44
ProFTP
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 12:12:30
paradox
незнаю
может это просто декомпилятор байт кода в asm
возьми проверь)
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 12:29:43
ProFTP
этого модуля в портах нету - ставить геморой, он в perl не переведет, только в asm
и байт код довольно сложный чем машинный, например
это обычный бот, наверное, ходил по ftp и ставил эти програмки, что там в нем смотреть
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 14:10:56
paix
ProFTP писал(а):этого модуля в портах нету - ставить геморой, он в perl не переведет, только в asm
это обычный бот, наверное, ходил по ftp и ставил эти програмки, что там в нем смотреть
ну так ясно что бот

не суть. Сегодня мелкая пакость, завтра большая... надо быть готовым.
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 14:29:40
ProFTP
ну это вирус пароль на фтп украл на винде и зашел на сервак?
т.е. кто угодно может туда залить все что угодно...?
может нужно как-то system выключить?
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 15:20:09
paix
ProFTP писал(а):ну это вирус пароль на фтп украл на винде и зашел на сервак?
т.е. кто угодно может туда залить все что угодно...?
может нужно как-то system выключить?
да system уже давно выключен

на этом серваке про него забыли както...не суть.
одни трояны воруют у юзеров пароли,
эти пароли подпихуются ботам которые и пытаются залить и выполнить на серваке какуюнибудь фигню.
этот механизм прозрачен.
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 16:13:33
ProFTP
paradox писал(а):незнаю
может это просто декомпилятор байт кода в asm
возьми проверь)
там модуль не дописан, и им никто не пользовался, гугл не пишет чтобы им кто-то пользовался
http://www.google.com.ua/#hl=uk&q=use+D ... 4bacaee8e0
Re: дизасемблировать бинарник
Добавлено: 2009-10-26 16:20:02
ProFTP
и он выводит:
Код: Выделить всё
sub print_insn {
my ($insn, $arg, $comment) = @_;
undef $comment unless $comment;
if (defined($arg)) {
if ($insn eq 'newopx' or $insn eq 'ldop') { # threaded or unthreaded
my $type = $arg >> 7;
my $size = $arg - ($type << 7);
$arg .= sprintf(" \t# size:%d, type:%d %s", $size, $type) if $comment;
printf "\n# [%s %d]\n", $opname[$type], $opix++ if $comment;
} elsif (!$comment) {
;
} elsif ($insn eq 'newsvx') {
# TODO which type? SV, AV or GV. check arg
$arg .= "\t# ".$comment if $comment ne '1';
printf "\n# [%s]\n", 'SV';
} elsif ($insn eq 'gv_stashpvx') {
$arg .= "\t# ".$comment if $comment ne '1';
printf "\n# [%s]\n", "STASH";
} elsif ($insn eq 'ldsv') {
# TODO which type? SV, AV or GV. check arg
$arg .= "\t# ".$comment if $comment ne '1';
printf "\n# -%s-\n", 'SV';
} elsif ($insn eq 'gv_fetchpvx') {
$arg .= "\t# ".$comment if $comment ne '1';
printf "\n# [%s]\n", 'prototype';
} else {
$arg .= "\t# ".$comment if $comment ne '1';
}
printf "%s %s\n", $insn, $arg;
} else {
$insn .= "\t# ".$comment if $comment ne '1';
print $insn, "\n";
}
}