Slijede razlike između dviju inačica stranice.
Starije izmjene na obje strane Starija izmjena Novija izmjena | Starija izmjena | ||
racfor_wiki:seminari2024:malware_u_pypi_ekosustavu [2024/12/28 10:38] Brlek Marko [Kako funkcioniraju PyPI paketi, kako se objavljuju] |
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:// | ||
+ | ==== 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 " | ||
+ | |||
+ | |||
+ | |||
==== Uvod ==== | ==== Uvod ==== | ||
Redak 28: | 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: " | + | 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:// | ||
+ | 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 " | ||
+ | |||
+ | {{https:// | ||
+ | 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 42: | 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, | 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, | ||
- | 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 " | Jedna od najčešćih taktika je stvaranje paketa s imenom koje nalikuje nekom popularnom i legitimnom paketu. Primjerice, napadač može paket umjesto " | ||
- | 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 56: | 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. | + | Zbog ranjivog ekosustava, određene tvrtke specijalizirane za kibernetičku sigurnost kontinuirano skeniraju PyPI repozitorij i traže maliciozne pakete. |
- | < | + | {{https:// |
+ | Slika 4. Primjer GuardDog upozorenja | ||
Te značajke su: | Te značajke su: | ||
**Prazan opis paketa**: | **Prazan opis paketa**: | ||
+ | |||
**Jedna python datoteka**: Paketi koji sadrže samo jednu Python datoteku mogu biti sumnjivi jer većina legitimnih paketa ima složeniju strukturu. | **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. | **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. | **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 | + | |
+ | Koraci detaljnije analize: | ||
**1. Pregled datoteke setup.py** | **1. Pregled datoteke setup.py** | ||
- | Detaljnija analiza bi trebala započeti tako da analiziramo " | + | Detaljnija analiza bi trebala započeti tako da analiziramo " |
- | < | + | {{racfor_wiki: |
+ | Slika 5. Prepisivanje instalacijske komande paketa | ||
**2. Analiza izvornog koda** | **2. Analiza izvornog koda** |