Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Razlike

Slijede razlike između dviju inačica stranice.

Poveznica na ovu usporedbu

Starije izmjene na obje strane Starija izmjena
Novija izmjena
Starija izmjena
racfor_wiki:seminari2024:malware_u_pypi_ekosustavu [2024/12/28 10:11]
Brlek Marko [Literatura]
racfor_wiki:seminari2024:malware_u_pypi_ekosustavu [2024/12/29 19:16] (trenutno)
Brlek Marko [Malware u PyPI ekosustavu]
Redak 1: Redak 1:
 +===== Malware u PyPI ekosustavu =====
 +[[https://ferhr-my.sharepoint.com/:v:/g/personal/mb53187_fer_hr/EbcC19QedplIo11I5ko2THUBIgQ_Y4H2Eq5Zz_yKm7hdgg?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=e0mv8m|Videoprezentacija]]
 +==== Sažetak ====
 +
 +PyPI, centralni repozitorij za Python pakete, ključan je za ubrzani razvoj softvera, ali njegova otvorenost čini ga ranjivim na maliciozne pakete. Napadači koriste različite metode za distribuciju zlonamjernog koda, poput manipulacije verzijama ovisnosti, imitacije popularnih biblioteka (typosquatting) ili implementacije skrivene maliciozne funkcionalnosti. Primjeri poput incidenta s PyTorchom i lažnih paketa poput "nupmy" pokazuju ozbiljnost prijetnje.
 +
 +
 +
 ==== Uvod ==== ==== Uvod ====
  
Redak 14: Redak 22:
 U svojoj srži, PyPI paketi su arhive, uglavnom .tar.gz ili .whl, koje možemo shvatiti slično kao .zip arhive. One u sebi sadrže Python kod, metapodatke te druge resurse potrebne za distribuciju. Kada korisnik želi instalirati neki paket, poziva naredbu "pip install ime_paketa" iz komandne linije. Ovo dohvati paket iz PyPI repozitorija, zajedno s paketima o kojima ovisi, te ih onda instalira u korisnikovo Python okruženje. Nakon toga, paket je spreman za upotrebu i može se jednostavno integrirati u program pomoću naredbe "import ime_paketa". U svojoj srži, PyPI paketi su arhive, uglavnom .tar.gz ili .whl, koje možemo shvatiti slično kao .zip arhive. One u sebi sadrže Python kod, metapodatke te druge resurse potrebne za distribuciju. Kada korisnik želi instalirati neki paket, poziva naredbu "pip install ime_paketa" iz komandne linije. Ovo dohvati paket iz PyPI repozitorija, zajedno s paketima o kojima ovisi, te ih onda instalira u korisnikovo Python okruženje. Nakon toga, paket je spreman za upotrebu i može se jednostavno integrirati u program pomoću naredbe "import ime_paketa".
  
-Za kreiranje paketa, ukratko, potrebno je imati određenu strukturu direktorija gdje se nalazi kod koji želimo pretvoriti u paket. Neke od datoteka koje su potrebne su, npr. setup.py i pyproject.toml, koje specificiraju stvari poput imena i opisa paketa, verzije, ovisnosti te ulaznih točaka. Kada se ostvari poželjna struktura, pozivom naredbe "python -m build" se kreira "dist/" direktorij u kojem se nalaze arhive paketa.+Za kreiranje paketa, ukratko, potrebno je imati određenu strukturu direktorija gdje se nalazi kod koji želimo pretvoriti u paket (Slika 1)Primjer potrebne datoteke je pyproject.toml, koja specificira stvari poput imena i opisa paketa, verzije, ovisnosti te ulaznih točaka. Kada se ostvari poželjna struktura, pozivom naredbe "python -m build" se kreira "dist/" direktorij u kojem se nalaze arhive paketa. 
 + 
 +{{racfor_wiki:seminari2024:pypi_package_structure.jpg}} 
 +  Slika 1. Struktura direktorija Python paketa
  
 Više o kreiranju paketa možete pronaći [[https://packaging.python.org/en/latest/tutorials/packaging-projects/|ovdje]]. Više o kreiranju paketa možete pronaći [[https://packaging.python.org/en/latest/tutorials/packaging-projects/|ovdje]].
  
-Za objavljivanje paketa na PyPI, potrebno je napraviti korisnički račun na PyPI te preuzeti API token za autentifikaciju. Za sami upload, preporuča se koristiti alat twine iz komandne linije kojem predajemo putanju do arhiva paketa te api ključ. Nakon uspješne objave, paket postaje dostupan drugim korisnicima putem PyPI repozitorija.+Za objavljivanje paketa na PyPI, potrebno je napraviti korisnički račun na PyPI te preuzeti API token za autentifikaciju. Za sami upload, preporuča se koristiti alat twine iz komandne linije kojem predajemo putanju do arhiva paketa te API ključ. Nakon uspješne objave, paket postaje dostupan drugim korisnicima putem PyPI repozitorija.
  
  
Redak 25: Redak 36:
 Kako bismo bolje razumjeli što maliciozni PyPI paketi mogu učiniti, osvrnut ćemo se na jedan nedavno otkriveni primjer. Kako bismo bolje razumjeli što maliciozni PyPI paketi mogu učiniti, osvrnut ćemo se na jedan nedavno otkriveni primjer.
  
-U srpnju 2024. FortiGuard Labs je otkrio PyPI paket koji je pri svojoj inicijalizaciji preuzimao datoteke sa malicioznog URL-a (slika), jedna od kojih je bila izvršna datoteka koja se automatski pokušavala pokrenuti. Forenzičkom analizom otkriveno je da je izvršna datoteka zapakirana koristeći PyInstaller te su reverznim inženjerstvom došli do izvornog koda programa. U izvornom kodu su se nalazile tri sumnjive datoteke: "Discord_token_grabber.py", "get_cookies.py" i "password_grabber.py". Cilj svakog programa je bio ukrasti određene osjetljive informacije s korisnikovog računala te ih poslati na udaljeni poslužitelj. Primjerice, "Discord_token_grabber.py" je po "AppData" direktoriju na Windowsima tražio korisnikov Discord token koji se može koristiti za autentikaciju. Koristili su regularne izraze kako bi našli potencijalne tokene, a zatim bi sa svakim tokenom pokušali napraviti zahtjev na Discord API te vidjeli hoće li poslužitelj vratiti status 200. Ako hoće, pokušati će preko Discord API-ja dohvatiti korisnikove spremljene načine plačanja te neke druge informacije o korisniku (slika). Dohvaćene informacije se zatim šalju na maliciozni poslužitelj koji ih sprema. "Get_cookies.py" i "password_grabber.py" su se fokusirali na krađu kolačića i spremljenih lozinki iz lokalnih preglednika.+U srpnju 2024. FortiGuard Labs je otkrio PyPI paket koji je pri svojoj inicijalizaciji preuzimao datoteke sa malicioznog URL-a (Slika 2), jedna od kojih je bila izvršna datoteka koja se automatski pokušavala pokrenuti. Forenzičkom analizom otkriveno je da je izvršna datoteka zapakirana koristeći PyInstaller te su reverznim inženjerstvom došli do izvornog koda programa.  
 + 
 +{{https://www.fortinet.com/blog/threat-research/malicious-packages-hidden-in-pypl/_jcr_content/root/responsivegrid/table_content/par/image.img.png/1722293930680/pypl1.png?500}} 
 +  Slika 2. Preuzimanje datoteka pri inicijalizaciji paketa 
 + 
 +U izvornom kodu su se nalazile tri sumnjive datoteke: "**Discord_token_grabber.py**", "**get_cookies.py**" i "**password_grabber.py**". Cilj svakog programa je bio ukrasti određene osjetljive informacije s korisnikovog računala te ih poslati na udaljeni poslužitelj. Primjerice, "**Discord_token_grabber.py**" je po "AppData" direktoriju na Windowsima tražio korisnikov Discord token koji se može koristiti za autentikaciju. Koristili su regularne izraze kako bi našli potencijalne tokene, a zatim bi sa svakim tokenom pokušali napraviti zahtjev na Discord API te vidjeli hoće li poslužitelj vratiti status 200. Ako hoće, pokušati će preko Discord API-ja dohvatiti korisnikove spremljene načine plaćanja te neke druge informacije o korisniku (Slika 3).  
 + 
 +{{https://www.fortinet.com/blog/threat-research/malicious-packages-hidden-in-pypl/_jcr_content/root/responsivegrid/table_content/par/image_copy_822202020.img.png/1722298132616/pypl4.png?500}} 
 +  Slika 3. Dohvaćanje osjetljivih informacija preko Discord API-ja 
 +   
 +Dohvaćene informacije se zatim šalju na maliciozni poslužitelj koji ih sprema. "**Get_cookies.py**" i "**password_grabber.py**" su se fokusirali na krađu kolačića i spremljenih lozinki iz lokalnih preglednika.
  
 Ovaj primjer ističe jedan od najočitijih oblika malicioznih aktivnosti – izvršavanje zlonamjernog koda odmah pri inicijalizaciji paketa. Međutim, ovo nije jedini način na koji maliciozni paketi mogu djelovati. Ovaj primjer ističe jedan od najočitijih oblika malicioznih aktivnosti – izvršavanje zlonamjernog koda odmah pri inicijalizaciji paketa. Međutim, ovo nije jedini način na koji maliciozni paketi mogu djelovati.
Redak 39: Redak 60:
 Maliciozni paketi često koriste kreativne tehnike kako bi ostali neprimijećeni i proširili se na što veći broj korisnika. Evo nekoliko primjera takvih strategija: Maliciozni paketi često koriste kreativne tehnike kako bi ostali neprimijećeni i proširili se na što veći broj korisnika. Evo nekoliko primjera takvih strategija:
  
-Manipulacijama verzijama ovisnosti+**Manipulacijama verzijama ovisnosti** 
 U prosincu 2022., PyTorch, popularan radni okvir za strojno učenje, je objavio da je u sebi imao uključenu malicioznu ovisnost. Način na koji se maliciozni paket uvukao u ovisnosti je tako što je zbunio PyPI jer je paket imao isto ime kao i interni, neobjavljeni, paket koji je PyTorch koristio. Naime, kod instaliranja paketa, prioritizirati će se onaj s većom verzijom. Napadači su to znali, te su javno objavili njihov maliciozni paket i stavili mu jako visoku verziju. Ovaj zlonamjerni paket ostao je neprimijećen pet dana. U prosincu 2022., PyTorch, popularan radni okvir za strojno učenje, je objavio da je u sebi imao uključenu malicioznu ovisnost. Način na koji se maliciozni paket uvukao u ovisnosti je tako što je zbunio PyPI jer je paket imao isto ime kao i interni, neobjavljeni, paket koji je PyTorch koristio. Naime, kod instaliranja paketa, prioritizirati će se onaj s većom verzijom. Napadači su to znali, te su javno objavili njihov maliciozni paket i stavili mu jako visoku verziju. Ovaj zlonamjerni paket ostao je neprimijećen pet dana.
  
-Imitacija legitimnih paketa+**Imitacija legitimnih paketa** 
 Jedna od najčešćih taktika je stvaranje paketa s imenom koje nalikuje nekom popularnom i legitimnom paketu. Primjerice, napadač može paket umjesto "numpy" nazvati "nupmy". Za očekivati je da će, pošto legitiman paket ima velik broj instalacija, neki korisnik nekada krivo upisati ime paketa pri instalaciji i time preuzeti malicioznu verziju. Ova metoda oslanja se na ljudske pogreške, što je čini jednostavnom, ali učinkovitom. Jedna od najčešćih taktika je stvaranje paketa s imenom koje nalikuje nekom popularnom i legitimnom paketu. Primjerice, napadač može paket umjesto "numpy" nazvati "nupmy". Za očekivati je da će, pošto legitiman paket ima velik broj instalacija, neki korisnik nekada krivo upisati ime paketa pri instalaciji i time preuzeti malicioznu verziju. Ova metoda oslanja se na ljudske pogreške, što je čini jednostavnom, ali učinkovitom.
  
-Maskiranje u korisne biblioteke s malicioznim skrivenim funkcionalnostima+**Maskiranje u korisne biblioteke s malicioznim skrivenim funkcionalnostima** 
 Maliciozni paketi mogu se predstaviti kao korisne biblioteke koje zaista obavljaju određeni zadatak, dok istovremeno izvode i zlonamjerne aktivnosti. Na primjer, napadač može kreirati biblioteku koja olakšava rad s bazama podataka, ali u pozadini presreće i šalje podatke na udaljeni poslužitelj prije nego što ih pohrani u bazu korisnika. Ovo čini paket naizgled legitimnim i teže ga je otkriti. Maliciozni paketi mogu se predstaviti kao korisne biblioteke koje zaista obavljaju određeni zadatak, dok istovremeno izvode i zlonamjerne aktivnosti. Na primjer, napadač može kreirati biblioteku koja olakšava rad s bazama podataka, ali u pozadini presreće i šalje podatke na udaljeni poslužitelj prije nego što ih pohrani u bazu korisnika. Ovo čini paket naizgled legitimnim i teže ga je otkriti.
  
Redak 53: Redak 77:
 ==== Detekcija malicioznih paketa ==== ==== Detekcija malicioznih paketa ====
  
-Zbog ranjivog ekosustava, određene tvrtke specijalizirane za kibernetičku sigurnost kontinuirano skeniraju PyPI repozitorij i traže maliciozne pakete. SJedan od primjera je Security Labs, koji je razvio alat GuardDog. GuardDog analizira pakete i na temelju specifičnih značajki podiže upozorenja o mogućoj zlonamjernoj aktivnosti. Na sljedećoj slici prikazan je primjer takvog upozorenja:+Zbog ranjivog ekosustava, određene tvrtke specijalizirane za kibernetičku sigurnost kontinuirano skeniraju PyPI repozitorij i traže maliciozne pakete. Jedan od primjera je Security Labs, koji je razvio alat GuardDog. GuardDog analizira pakete i na temelju specifičnih značajki podiže upozorenja o mogućoj zlonamjernoj aktivnosti. Na sljedećoj slici (Slika 4) prikazan je primjer takvog upozorenja:
  
-<slika>+{{https://datadog-securitylabs.imgix.net/img/malicious-pypi-package-targeting-highly-specific-macos-machines/triage-workflow.png?500}} 
 +  Slika 4. Primjer GuardDog upozorenja
  
 Te značajke su: Te značajke su:
  
-Prazan opis paketa:  Legitimni paketi gotovo uvijek uključuju opise kako bi pojasnili svoju svrhu, dok maliciozni često ostavljaju opis prazan. +**Prazan opis paketa**:  Legitimni paketi gotovo uvijek uključuju opise kako bi pojasnili svoju svrhu, dok maliciozni često ostavljaju opis prazan. 
-Jedna python datoteka: Paketi koji sadrže samo jednu Python datoteku mogu biti sumnjivi jer većina legitimnih paketa ima složeniju strukturu. + 
-Prepisivanje komandi: Ako paket prepisuje ponašanje prilikom izvršenja komande install, to može ukazivati na potencijalnu malicioznu namjeru. +**Jedna python datoteka**: Paketi koji sadrže samo jednu Python datoteku mogu biti sumnjivi jer većina legitimnih paketa ima složeniju strukturu. 
-Izvršavanje sustavnih komandi: Paketi koji pozivaju komande operacijskog sustava izuzetno su sumnjivi jer to omogućava pokretanje zlonamjernog koda.+ 
 +**Prepisivanje komandi**: Ako paket prepisuje ponašanje prilikom izvršenja komande install, to može ukazivati na potencijalnu malicioznu namjeru. 
 + 
 +**Izvršavanje sustavnih komandi**: Paketi koji pozivaju komande operacijskog sustava izuzetno su sumnjivi jer to omogućava pokretanje zlonamjernog koda.
  
 No, ove značajke nisu dovoljne da bi mogli sa sigurnošću reći da je paket maliciozan, već nam samo kažu da moramo obaviti detaljniju analizu. No, ove značajke nisu dovoljne da bi mogli sa sigurnošću reći da je paket maliciozan, već nam samo kažu da moramo obaviti detaljniju analizu.
  
-Koraci detaljnije analize 
-1. Pregled datoteke setup.py 
  
-Detaljnija analiza bi trebala započeti tako da analiziramo "setup.py" datoteku. U njoj možemo vidjeti je li paket prepisao instalacijsku komandu te unutra umetnuo maliciozan kod, kao na slici:+Koraci detaljnije analize: 
 + 
 +**1. Pregled datoteke setup.py** 
 + 
 +Detaljnija analiza bi trebala započeti tako da analiziramo "setup.py" datoteku. U njoj možemo vidjeti je li paket prepisao instalacijsku komandu te unutra umetnuo maliciozan kod, kao na slici (Slika 5):
  
-<slika>+{{racfor_wiki:seminari2024:override_install.jpg}} 
 +  Slika 5. Prepisivanje instalacijske komande paketa
  
-2. Analiza izvornog koda+**2. Analiza izvornog koda**
 Nakon pregleda konfiguracijskih datoteka, potrebno je proučiti izvorni kod paketa kako bi se identificirale sumnjive funkcije, hardkodirani URL-ovi, ili druge neuobičajene aktivnosti. Nakon pregleda konfiguracijskih datoteka, potrebno je proučiti izvorni kod paketa kako bi se identificirale sumnjive funkcije, hardkodirani URL-ovi, ili druge neuobičajene aktivnosti.
  
-3. Testiranje u sandbox okruženju+**3. Testiranje u sandbox okruženju**
 Preuzimanje i pokretanje paketa u izoliranom sandbox okruženju omogućuje sigurno promatranje ponašanja paketa. Ovo uključuje praćenje mrežnih aktivnosti, pokrenutih procesa i promjena na datotečnom sustavu. Preuzimanje i pokretanje paketa u izoliranom sandbox okruženju omogućuje sigurno promatranje ponašanja paketa. Ovo uključuje praćenje mrežnih aktivnosti, pokrenutih procesa i promjena na datotečnom sustavu.
  
-4. Prijava malicioznih paketa+**4. Prijava malicioznih paketa**
 Ako analiza potvrdi da je paket maliciozan, potrebno je obavijestiti PyPI tim. Oni će poduzeti potrebne korake kako bi uklonili paket iz repozitorija i spriječili daljnju štetu. Ako analiza potvrdi da je paket maliciozan, potrebno je obavijestiti PyPI tim. Oni će poduzeti potrebne korake kako bi uklonili paket iz repozitorija i spriječili daljnju štetu.
  
racfor_wiki/seminari2024/malware_u_pypi_ekosustavu.1735380703.txt.gz · Zadnja izmjena: 2024/12/28 10:11 od Brlek Marko
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0