Jump to content
¯\_( ツ)_/¯
  • TAD GROUP are currently hiring penetration testers. Please read the topic in Career Central subforum.
  • Sponsored Ad
nikoyal

Как да започна да уча exploit/mawlare development

Recommended Posts

Искам да започна да създавам собствени експлоити и инструмент, но не съм сигурен откъде да започна

Знам основите на python и C# и долу-горе networking!

Доколкото знам се използват python C++ perl и ruby но вярвам че мога да науча основите останалите езици за месец два ако се захвана, но аз лично предпочитам да програмирам с python или С++.

Ако ми дадете някакви насоки ще съм много благодарен !!

Share this post


Link to post
Share on other sites

Ако говорим за binary exploitation за старт си мисля, че най-достъпно е обяснено в  https://www.amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X . Правиш всичко до 5-та глава и ще имаш основата. Малко е старичка и има доста по-културни инструменти вече за работа, но нещата не са се променили особено и с малко старание примерите сработват. Ще видиш примерно как използват C и извънземни техники за deploy, които в момента ти костват 10 реда код на Python.

Нещата с които ще се сблъскаш най-вече са дебъг инструменти и асемблер за съответната архитектура. Хубаво е да си се занимавал с reverse engineering защото binary exploitation-а надгражда там. Вече зависи с каква архитектура и ОС ще подхванеш. Примерно основни инструменти са:

  • за Линукс - gdb+pwndbg/peda, radare2
  • за Windows - windbg, x64dbg

 

Share this post


Link to post
Share on other sites
Преди 16 часа, mrgray написа:

Ако говорим за binary exploitation за старт си мисля, че най-достъпно е обяснено в  https://www.amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X . Правиш всичко до 5-та глава и ще имаш основата. Малко е старичка и има доста по-културни инструменти вече за работа, но нещата не са се променили особено и с малко старание примерите сработват. Ще видиш примерно как използват C и извънземни техники за deploy, които в момента ти костват 10 реда код на Python.

Нещата с които ще се сблъскаш най-вече са дебъг инструменти и асемблер за съответната архитектура. Хубаво е да си се занимавал с reverse engineering защото binary exploitation-а надгражда там. Вече зависи с каква архитектура и ОС ще подхванеш. Примерно основни инструменти са:

  • за Линукс - gdb+pwndbg/peda, radare2
  • за Windows - windbg, x64dbg

 

Благодаря ти за насоките, но имам още няколко въпроса:

1.Да започна ли да уча ассембли и ако да би ли ми препоръчал сорс от който да уча аз бях започнал от "The Art of Assembly Language" -- https://www.ic.unicamp.br/~pannain/mc404/aulas/pdfs/Art Of Intel x86 Assembly.pdf , но не я прочетох до край спрях след introducion-а защото прочетох някаде че не е нужно чак толкова да се знае ассембли

2.От reverse engineering не разбирам почти нищо бях се захванал с "Gray Hat Python" -- http://www.chinastor.org/upload/2015-08/15081917086229.pdf    , но беше твърде сложна книгата и реших че ми е рано. Та това нужно ли е да го уча преди да се захвана с "shellcoders Handbook" и ако да може ли някакви насоки ?

tlrd:Да науча ли ассембли и ревърс ендженииринг преди да се захвана с книгата или направо да я почвам ?

Отново Благодаря за насоките !!!

Share this post


Link to post
Share on other sites

"The Art of Assembly Language" е супер дълга и не е много по същество. Да не говорим, че използва High Level Assembly, което освен в тая книга другаде не съм виждал да се ползва. Прочети 1-ва глава от "Practical Reverse Engineering", после виж LOLI crackmes и се запознай с radare2 и gdb - компилираш Hello World и го пускаш под дебъгър и дисасемблер, колкото да видиш скелета на програмата. Може да си помагаш на места с https://beginners.re/. RE4BE може да ползваш като референция за доизясняване и идеи за примерни програмки, не мисля че е подходяща да четеш от кора до кора. Инструкции, които не разбираш ги проверявай в Гугъл.

Това естествено ще те бутне в посока Linux, но low level нещата под Linux са доста по-прости и удобни за начинаещи от Windows примерно. Линукс инструментите са по-дърварски, но концепциите са по-лесни за схващане.

След като добиеш обща представа за нещата, се върни на "Shellcoder's Handbook". Прочети първите 5 глави и направи примерите. След това може да пробваш http://pwnable.kr/play.php. След това ще можеш сам да си прецениш какво да правиш :)

Писането на експлойти обхваща много сфери. От разбиране за процесорна архитектура, през операционни системи до овладяване на инструментите за development ( компилатори, дебъгъри и др).

Относно Gray Hat Hacking съм със смесени чуства. Има полезни неща вътре, но се опитват под една мишница всички дини да хванат. Предпочитам да чета по-фокусирана литература. Като ще уча binary exploitation ще се фокусирам там, няма да чета на следващата страница за ARP spoofing.

Share this post


Link to post
Share on other sites

@mrgray Прочетох "Practical Reverse Engineering" като цяло научих нещата като "mov" но ми е трудно да се справям със задачите след първата глава, трябва ли да науча всяка от дадените команди и да овладея дадената информация преди да продължа към "LOLI crackmes" или това че съм се сдобил със общата представа е достатъчно ?

Сори ако те занимавам с глупави въпроси

Edited by nikoyal

Share this post


Link to post
Share on other sites

Давай към crackmes. Трябва ти обща представа за x86 архитектурата и да се ориентираш (горе долу) като видиш дисасемблиран код. От там нататък действаш като редови дев - googling all the shit.

Share this post


Link to post
Share on other sites

Ники, четене-практика-четене. Това е решението на проблема и честно казано няма как да ти се ограничи диапазона на разучаване. Харесваш си някоя задачка и я започваш. Ровиш се в нета докато откриеш решение на проблемите с които си се сблъскал или поне някакъв отговор и продължаваш натататък. 

Share this post


Link to post
Share on other sites
Преди 1 час, freeman987 написа:

Ники, четене-практика-четене. Това е решението на проблема и честно казано няма как да ти се ограничи диапазона на разучаване. Харесваш си някоя задачка и я започваш. Ровиш се в нета докато откриеш решение на проблемите с които си се сблъскал или поне някакъв отговор и продължаваш натататък. 

Уважавам мнението ви, но тогава на практика не съм решил сам задачата а съм я "преписал" не е ли така ?

Share this post


Link to post
Share on other sites
преди 3 минути, nikoyal написа:

Уважавам мнението ви, но тогава на практика не съм решил сам задачата а съм я "преписал" не е ли така ?

Ти я решаваш сам, но се сблъскваш с проблеми от всякакъв вид и просто питаш за да го научиш. Как ще караш колата на сервиз за смяна на маслото, като не знаеш, че вече е за смяна. Не си ме разбрал правилно. Сам се учиш но на практика търсиш решения на проблема в интернет и взаимстваш код, идеи и прочие. 

Share this post


Link to post
Share on other sites

@mrgray Тези кракмета след 0х4 (петото) не мога да ги направя твърде трудно ми е да си преведа асемблито ,та въпросът ми е да продължавам ли към "Shellcoder's Handbook" или да понауча още асембли докато не почна да ги решавам ++ гледам че в "Shellcoder's Handbook" се изисква доста ассембли 

Share this post


Link to post
Share on other sites

Бих ти препоръчал да понаучиш по-добре какво се случва. Просто после ще изгубиш много бързо нишката, като минеш малко над базов buffer overrun в стека. Експлойтинга се състои от:

  • откриване къде е уязвимостта/бъга
  • правене на схема как да се експлоатира - заобикаляне на защити, проследяване на инпут, минаване на филтри, докато execute-неш exit() call примерно ( все едно правиш alert(1) като показваш XSS)
  • писане на смислен shellcode който да върши нещо - отваряне на шел, code execution loop, etc

Всяко едно от тези неща изисква техническа дълбочина. Пробвай да направиш каквото можеш все пак де. Почети малко от книгата и се пробвай на някое от:

И действай сам. Няма да стане бързо, свиквай с тази мисъл.

 

Share this post


Link to post
Share on other sites

@mrgray Научих основите на ассембли (Поне аз така мисля) И реших да започна със "Shellcoder's handbook" до 2 глава  долу-горе разбирам какво се случва, но проблемът е че стигнах до момент в който трябва да компилирам някакъв басик шелкод проблема е обаче, че като го подкарам ми дава "Segmentation fault".

// shellcode.c
char shellcode[] =
“\xeb\x1a\x5e\x31\xc0\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x46”
“\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1”
“\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68”;
int main()
{
int *ret;
ret = (int *)&ret + 2;
(*ret) = (int)shellcode;
}

 

Постнах проблема си във stackoverflow  и ми казаха, че книгата е много стара и е нормално да е пълна с неработещ код. Пробвах да изтегля някой по нов шелл за да мога  да го инжектвам за задачите напред, но не открих. Да премина ли напред без шелла или ми е неубходим ?

Share this post


Link to post
Share on other sites

От моя страна мога да препоръчам https://beginners.re/ много добра книжка. Всичко в нея работи.

Share this post


Link to post
Share on other sites

За съжаление доста неща от тази книга няма да сработят в момента. Тук може да видиш по-подробно какви проблеми и в кои глави има. В момента и аз работя  по книгата и доста малко от нещата тръгват. Примерно на глава 5 за Heap Exploitation редом с книгата прегледах и how2heap, докато ми се изясниха кои техники са илюстрирали в книгата. Според мен е важно ако нещо не ти тръгне да копаеш докато разбереш какво точно не тръгва. Ето например в този код, който си дал трябва да провериш дали сегмента заделен за shellcode променливата е executable като компилираш програмата. За да го провериш, ще трябва да знаеш как да работиш с gdb и objdump на базово ниво. Ако не знаеш как да бачкаш с тях ще се научиш преди да продължиш и т.н 🙂 Дори да не ти сработят примерите пак може да научиш много. За съжаление нямаш модерна енциклопедия за exploit-writing и трябва повече да рисърчваш и да събираш знание и сам да си сглабяш картинката.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.