
здравейте радо догодина тесла ама не знам как ще я купуваш гледайте сега идеята е много проста почти колкото мене значи взимаме един файл и го оф скира това е едно зелено такова летящо и има пила на гърба елф а не знам файл някои сеща ли се какво е на английски оказа се че е пила не знам може би щото са пилили дискове едно време там с това нещо а да та много е проста идеята взимаме ал файл го опу сме аз имам също толкова проста идея как да станем не един път гледах един мотивационен лектор и той така ме надъха ама така ме надъха че реших да си променя живота тук сега и завинаги и реших ще измисля как
аз става милионер и почнах да мисля мислех мислех легнал мислех седнал мислех в банята мислех outs of the box мислех inside of the box мислех в кръг мислех креативно мислех индуктивно мислех дедуктивно абе голяма мис падна обаче накрая го измислих за да станеш милионер трябва да си легнеш милионер моля да не се бърка със схемата да си легнеш с милионер това е друга схема популярна е но има допълнителни стъпки има адвокати погребения завещания не е толкова проста колкото моята схема добре с тия простотии сега сериозно на темата как се опо скира ел
файл хм
фейл а значи съжалявам че не мога да наема митио пищова да презентира нямам толкова пари но ако той беше тука съм сигурен че би представил темата точно по тоя начин та какво е тинтири минтер може би това е въпрос са тинтири минтири е велик софтуер който аз написах в свободното си време който ще осрал фал за който ви
говоря елфа да добър въпрос какво е елфчета с митьо не са говорили за това какво е елф но добре с тия простотии почваме с доставната част значи как работи това нещо ако знае какво е l файл там има един program header това е единственото нещо на което може да се разчита в l файла тоя program header има сег сегменти вътре това не са процесорни сегменти да не се бъркат моля та съответно цялата информация която съдържа в l файла всъщност се разпределена по тия сегменти те са някои от тях се зареждат в паметта някои не се зареждат но идеята е че цялото бари е описано в тия сегменти сегмент едно парче памет с флагчета какви права има как трябва да
се мап къде да се намери в съответния файл и на какъв адрес виртуален да се сложи та какво правим намираме сегмента който съдържа кода който в случая е с жълто копираме го на ново място като нов сегмент и го криптираме сега защо бихме го копирали вместо просто да го криптираме нали тука е интересната част защото когато оставим оригиналния код сегмент някъде там първо той ще ни трябва за да скочим после на него но най-интересното е че там може да оставим съобщение на бедната душа която ще трябва да ревърс това файлче след това значи представете си летия ревърс инженер който по цял ден гледа хекс очите му станали на понички всичко е досадно тъпо едни и същи маури по цял
ден животът му е скучен изведнъж а изненада нещо ново човекът ще се зарадва ще си каже ей ще науча нещо днеска та съобщението което може да се остав там е всякакво нали може да сложим каквито си искаме инструкций може да си вземем друго байри да си го копнем там докъдето се събере нали което много интересно изглежда в някои ревърс инжениринг тулове но например може да оставим и нещо лично нещо от душа например може да напишем дядо мраз дядо мраз ти си съветският дядо коледа нещо да му стане топло на човека като го види като го ревърс един стрингс да му удари да си каже ей днеска ще е забавен ден така затова оставяме оригиналния сегмент местим там копираме криптираме и
си създаваме ново сегмент какво правим с великите стрингове стринговете ако тия бяха криптирали стринговете ще да ги намериш на куково лято нали така и аз съответно мисля мисля като един истински хакер как да скрием стринговете ами стринговете ще ги криптираме просто те са в зеленичко показани тука и накрая да ами как да го разширя бате то това е резолюцията толкова тука се вижда по-добре между другото не се притеснявай нищо важно нищо важно не пише жълтичко зеленичко и червеничкото сега е най-интересното защото вече като сме се сипали така омазали файла мощно той няма как да се изпълни а най-важната част на едно нещо или на един маур примерно или на нещо което искате да изпълните скрито е да то да може да се
изпълни нали не да го пуснеш там и то нещо да е направили да ка и кор дъмп затова в червеничко добавяме вълшебния код това е един магически код който ще направи така нещата че всъщност да се изпълни това което е било оригинално и накрая за капак на всичко променяме entry пота на е файлчето така че то да сочи към нашия вълшебен код али това е в лилави тука с едно кръгче долу червеничко съм отбелязал че вълшебният код е с rde exec флагчето сега не е задължително да има райт ама айде няма да да правя всичко на готово така нали обяснихме как работи тоест обяснихме как се маже досега файла сега как се изпълнява това нещо
time нали тука креативността може да е възде съща кой каквито идеи има може да ги имплементира но аз съм се спрял на култовата идея да декриптирам страничка по страничка оригиналния код сегмент тоест магическият код какво трябва да направи той трябва да инсталира един синал хенър съответно тоя сина р всеки път когато се удари segmentation f ще отиде ще намери откъде е дошъл тоя segmentation f и ако той е от оригиналния сегмент ще намери офсета в този сегмент след което ще отиде в криптирания сегмент на същия офсет ще декриптира страничката ще я сложи обратно на мястото ѝ и ще възстанови изпълнението до следващия segmentation f разбира се така сега тука по принцип могат да се вкарат много най-различни други схеми за
изпълнение може да не е segmentation т сигнал може да е нещо друго може да се слот нелегални инструкций ки така че да се променя сигналче е така сега нека да видим това чудо в действие тука съм направил скрийншот на последния най-велик маур на последния най-велик мирай който бива открит от 39 антивирусни програми не е зле обаче след обф сци на това байри вече имаме само осем от това трябва да ви стане пределно ясно кои са осемте антивирусни за които трябва да си дадете парите митьо ги е отбелязал одобрил ги е така а за вълшебния код сега това е нещо което е най-интересно в цялата работа как се прави такъв вълшебен код който магически може да бъде сложен в някакво
файлче и да почне да се изпълнява нали тоя код трябва да има няколко а основни характеристики първо трябва да е независим от адресното пространство тоест трябва да е position independant след това а много е важно тоя код да може да се вземе с пинсет като една топка и да се сложи на правилното място това е практически шел кот ако някой се сеща та какво е предизвикателството да направиш шел код нали ами ако знаеш асемблер никво нали сядаш блъскаш по клавиатурата докато малеш и излиза лко обаче аз съм мързелив и тъп и обикновено искам да си автоматизирам нещата затова използвам си а на си как се прави код който накрая свършва както виждате в един елф
сегмент ако сте отваряли барите нали елф барита стандартни там има поне седем l сегмента отдолу надолу нали като почнем със секциите те са пет екрана нали та как се прави тоя магически код който накрая в едно сегмент което съдържа не само изпълнения код но и променливите хората които си спомнят дост времената ще се сетят това е ком обект на всъщност не ком обект извинявам се това е ком файл да не обиждаме microsoft с ком обектите така нали ето как се прави това нещо под linux най-вероятно нищо няма да видите но какво значи по принцип това нещо се прави с linker script linker срип заклинанието с което може да правите всякакви изпълнения в тия l файлове link е нещо което може да пасне
всякакъв l файл във всякаква форма и не само да го парс ами да направи някаква логика от цялото парсване обектни файлове рт библиотеки изпълними файлове линкер знае какво да прави с тях та ние трябва да сглобим едно заклинание на този линкер скрипт така че нещата да се озоват в един сегмент как се прави това ами знаете ли как да си изкарате линкер скрипта който използва вашият компилатор някой знае няма ли един мбе програмист тука бе изстрадала душа няма има специален флаг който казваш върба си той ти го изкарва директно ти го изсипва на екрана компилатора та взимаме този готов linker скрипт и почваме да мажем по него докато остане една секцийка тоест едно сегмент всички секций ки ей тия звездичка tex
unlikely text exit read only data exception frame header всичките тия безумия които се генерират от компилаторите трябва да отидат в едно сегмент което аз тук логично съм нарекъл вдф искам да обърна внимание на великия адрес на който съм решил да мапна този сегмент който е баба цеца това е българският еквивалент на dead bef bad кот или там други английски изпълнения аз обаче обичам баба цеца обичам и дедо цецо обичам и други звучни изпълнения ако се замислите с б д е и други комбинации такива може да се получи интересни български словосъчетания така че малко креативност е нужна така това е великия линкер скрипт и сега нека да видим какво се случва когато го пуснем това в гидра
примерно значи това е едно нео фуски рано байри вижда се тонове функции тонове стрингове който иска да ревърс ето гоф усния файл обаче гидра не е доволна защото някакви неща са само мазал дето ги търси някакви секции почнала да търси не ги е намерила няма проблеми това не е уско приложение така че няма да гръмне какъв е резултатът резултатът съответно е пет функций скрол бар с почти нулева нулево покритие на функциите и много малък текст а стрингове открити какво се случва фида общо взето същата работа и дата се оплаква от някакви неща обаче и дата е хитра и дата проследи ентри пота и стигна до заветния код значи няма да ви обяснявам как се прави гола функция на си вие знаехте ли
че всички функции на си дето сте писали са облечени а на мене ми се наложи да пиша гола функция тази психична травма още я помня наложи ми се да пиша и асембли на газ което също оставя и трайни следи в моята шано за b сай така това е всъщност нтри пота на магичния код тука се сторват едни регистри след това се сторват и се вика един магичен а една магическа функция която ще свърши цялата работа гидра обаче не се сети да направи това нещо после ще ви покажа гидра реши че entry point е в дета сегмент и въобще не го деза асемблира което разбира не е проблем отиваш и казваш dis sle и гледаш но тя не го
направи и дата го направи добре тоя магически код какво трябва да направи значи някой знае ли коя е първата инструкция от едно бари която се
изпълнява никой ли не знае добре ви гдб не ползвате ли там ctf някой има ли да го викна еми първата инструкция ако е статично барето entry point ама това нали ако е статично барето ако не е статично барето кое е великият link dl не dl ами то е ld link rso това е магическата библиотека на която кернела ще скочи отначало която ще мап всички библиотечки в адресното пространство с която след това ще прочете на оригиналния файл кой му е entry point че чак след това ще го изпълня така особеност на тоя магически код по време на изпълнението е че много от нещата на които човек разчита може да ги няма значи а ако си компилирате кода със к семен
протек fs сегмента най-често го няма по това по време на изпълнение на та тази функцийка тоест кодът който се компилира трябва да е без stack протек иначе просто ще гръмне какво прави след това тоя магически код как се намира елф сегмент в адресното пространство по време на изпълнение е о сегмента е просто едно парче код как ще го намерим вместо в от файла в адресното пространство при положение че имаме нали address space lout random демек мога да скача където си иска има едно нещо в а сегмент тата което се нарича офсет и което за всеки файл е уникално за всеки сегмент това обаче не означава че два файла не могат да имат един и същ
осет какъв е проблемът проблемът е че ако имате библиотеки мапна в адресното пространство трябва много внимателно да пасвате memory map така че да спрете на първия l файл иначе ако продължите ще вземете някакви други сегменти отнякъде другаде та какво прави магическият код той обикаля адресното пространство намира си сегмент тата почва да мапва да мапва да слага мишини и накрая скача на оригиналния entry point който също трябва да е взет някъде в началото
фейл добре айде на демо сега обаче дам демото дали ще сработи ще ми е малко далеч клавиатурата добре
оп чете ли са така а както виждате името на проекта е тинтири минтири който иска може да го намери в github има един друг българин който се е кръстил така проекта много му се сърдя не можах да проверя пре да го създам добре пишем си едно пръстче м няма да стане оттука кое банер да обф скейт
нем ssh добре чакай че нещо
ти да видиш такова нещо нямам аз а айде това ще та клане
добре какво излезе излезе великия ssh мот добре айде направим тъй
ще намерим нещо ама няма да кой знае какво добре я да видим работи
ли магия работи сега искате ли да видите нещо което не работи айде че няма да е честно иначе
фейл разбира се защо фел на това нещо а защото някой е много придирчив и е решил да си инсталира собствен сигнал handler и тъй като това е част от стандартната програма тоя сигнал хендлър разбира се овра идва моя резултатът е налице дядо мраз точно така той е направил това нещо не в случая са авторите на великия тул топ така а как може да се заобиколи това нещо и по принцип може ли някой да се а реално погледнато а алгоритъмът за криптиране който съм избрал е просто един ер разбира се всеки може да си го смени с каквото иска но реално погледнато ако човек иска да скрие нещо а по-сериозно използвайки обция той трябва да сложи няколко леъра на цялото нещо
тъй като а едно нещо когато се изпълнява всеки може да го анализира нали най-малкото ще ударя едно гдб ако трябва там ще го тресва инструкция по инструкция ще разбере какво става нали има други схеми за опуска сия на ниво source код на ниво бесик блокове обектни файлове и така нататък lvm предоставя тонове инструментално по въпроса но какво друго може да се направи за този проект още например някой може да се направи да се път ресне себе си така че някой да не може да го тресва него нали да не може да го дебъгва това не е кой знае каква защита защото нали всеки ще разбере как да я заобиколи но такива неща могат да се
направят тонове например какво пречи на човек изобщо да не слага оригиналния код в това бари какъв е проблем сех да ходи до някакъв сървър и да се тегли страничка по страничка отто кой ще го спре никой тоест може да си направим лицензионен сървър да си пускаме така великия софтуер който сме произвели по тоя начин гарантирам че ще му е трудно на човек да събере цялото бари наведнъж ако разбира се см други анти дебъг защити вътре а какво друго може да се комбинира скво ви кефи като офци добре някакви въпроси има
ли всичко е ясно добре окей ами да приключваме
тогава h