Læring møter moro på 2022 SANS Holiday Hack Challenge – fest deg selv på en crackerjack-tur på Nordpolen mens jeg ødelegger Grinchums stygge plan og gjenvinner de fem gylne ringene
Dette er første året jeg deltar i SANS Holiday Hack Challenge og det var en blast. Gjennom en serie på 16 utfordringer som spenner fra lett til vanskelig, øvde jeg på å analysere mistenkelig nettverkstrafikk og PowerShell-logger, skrive Suricata regler, bryte ut av en Docker-container, finne lekke nøkler for å utnytte en GitLab CI/CD-pipeline og en AWS bruker, dirigering XML-angrep fra eksterne enheter, og hacke en smart kontrakt for å kjøpe en ikke-soppbart token.
Den beste delen av denne opplevelsen var at den introduserte meg for nye verktøy og teknologier, og dermed utvidet kunnskapen min om nettsikkerhet mye lenger. Her deler jeg noen få høydepunkter fra å løse utfordringene.
Orientering
Hver deltaker mottar en avatar for å navigere i et videospillmiljø i nettleseren satt på Nordpolen:
Under orienteringen mottar du en kryptovaluta-lommebok som spillet bruker til å tildele KringleCoins for å fullføre utfordringer og som du bruker i den siste utfordringen for å hacke en smart kontrakt. Interessant nok holder spillet styr på alle KringleCoin-transaksjoner i en Ethereum-blokkjede, noe som betyr at en fullstendig oversikt over fremgangen din også er lagret i denne blokkjeden.
Videre til spillets første ring.
1. Tolkien Ring
Å finne Tolkien-ringen krevde å bøye logganalysemusklene mine.
Wireshark-phishing
Først brukte jeg Wireshark til å analysere det oppgitte .pcap fil som avslørte en server på adv.epostoday[.]uk laster ned filen Ref_Sept24-2020.zip til en datamaskin:
Da jeg kikket inn i ZIP-filen, fant jeg en kjørbar fil kalt Ref_Sept24-2020.scr som utløste to deteksjoner i ESET Endpoint Security: BAT/Runner.ES og Generik.TAGTBG. Denne skadelige programvaren fører til slutt til en ondsinnet kjørbar fil som kjører i minnet kalt config.dll og oppdaget av ESETs Avansert minneskanner as Win32/Dridex.DD.
Windows hendelseslogger
Deretter analyserte jeg det oppgitte .evtx fil som inneholder PowerShell-logger med Event Viewer. Selv om det finnes andre verktøy for å analysere PowerShell-logger, hvis angripere vet hvordan de skal bruke levende-off-the-land binærfiler for å holde seg under radaren, bør forsvarere også være godt kjent med de opprinnelige verktøyene et operativsystem gir.
Siden loggene inneholdt 10,434 XNUMX hendelser, grupperte jeg hendelsene etter dato og kjørte deretter Finn-handlingen for å se etter hendelser som inneholder $ karakter. I PowerShell, $ brukes til å lage og referere variabler. Jeg fant et angrep som skjedde 24. desember 2022, da angriperen kjørte følgende skript:
Det ser ut til at angriperen fant en hemmelig oppskrift, byttet ut den hemmelige ingrediensen til honning forum fiskeolje, og opprettet deretter en ny oppskriftsfil. Dette utløste en hendelse med en ID på 4104, som står for utførelse av eksterne PowerShell-kommandoer. Så jeg filtrerte hendelsene etter denne ID-en, noe som hjalp meg å finne flere skadelige hendelser raskere.
Suricata Regatta
Den siste øvelsen for Tolkien Ring var å skrive fire Suricata-regler for å overvåke nettverkstrafikk for en Dridex-angrep:
alert dns $HOME_NET any -> any any (msg:"Kjent dårlig DNS-oppslag, mulig Dridex-infeksjon"; dns.query; innhold:"adv.epostoday.uk"; nocase; sid:1; rev:1;)
varsle http 192.185.57.242 enhver <> hvilken som helst (melding:”Undersøk mistenkelige sammenhenger, mulig Dridex-infeksjon”; sid:2; rev:1;)
alert tls any any -> any any (msg:”Undersøk dårlige sertifikater, mulig Dridex-infeksjon”; tls.cert_subject; innhold:”CN=heardbellith.Icanwepeh.nagoya”; sid:3; rev:1;)
varsle http any any -> any any (msg:”Mistenkelig JavaScript-funksjon, mulig Dridex-infeksjon”; file_data; content:”let byteCharacters = atob”; sid:4; rev:1;)
I rekkefølge fanger disse reglene DNS-oppslag for adv.epostoday[.]uk, tilkoblinger til IP-adressen 192.185.57[.]242, bruken av den ondsinnede serveren heardbellith.Icanwepeh[.]nagoya identifisert via det vanlige navnet (CN) i et TLS-sertifikat, og bruk av JavaScript atob() funksjon for å dekode en binær streng som inneholder base64-kodede data på klienten.
Å fullføre disse tre utfordringene ga meg Tolkien-ringen:
Videre til den andre ringen.
2. Elfen Ring
De mest fremtredende utfordringene for Elfen-ringen var Prison Escape og Jolly CI/CD.
Prison Escape
Prison Escape var en streng påminnelse om at det å gi root-privilegier til en bruker i en Docker-beholder er like bra som å gi root-privilegier på vertssystemet. Utfordringen var å bryte ut av containeren. Vel, enkelt gjort når du er root:
Som rotbruker listet jeg opp partisjonstabellene for enheten og monterte deretter vertsfilsystemet, og ga meg full tilgang til verten. Nå kunne jeg søke etter nøkkelen, som skal være plassert i hjemmekatalogen som avslørt av hint i spillet:
Jolly CI/CD
Selv om det gikk raskt, tok Jolly CI/CD meg den lengste utfordringen å finne ut av. Først fikk vi et Git-depot for å klone over HTTP:
Fra URL-en kunne jeg se at navnet på depotet var wordpress.flag.net.internt, så jeg flyttet til depotet og fant et WordPress-nettsted. Jeg sjekket om nettstedet var live:
Ja, nettsiden var funksjonell. Jeg var nysgjerrig på om det var noen lekke nøkler i kildekodehistorikken. Hvis ja, bør jeg kunne pushe redigeringer til kildekoden. Så jeg løp git logg:
Fra commit-meldingene ser det ut som en forplikte ble laget etter å ha lagt til eiendeler for å fikse en jøss. På tide å sjekke ut pre-hoops-forpliktelsen:
Utmerket, jeg fant en .ssh katalog med nøkler. La oss kopiere disse nøklene og konfigurere en SSH-agent og en Git-bruker for å se om jeg kan etterligne eieren av disse nøklene:
La oss nå gå tilbake til hovedgrenen og teste om vi kan presse en triviell endring i kildekoden (ved å bruke nano la jeg rett og slett et mellomrom til en av filene):
Så jeg oppnådde den første delen av utfordringen ved å utgi meg for en av WordPress-utviklerne, men fungerte nettstedet fortsatt etter at jeg ble presset?
Min push endret noe fordi nettstedet nå ble omdirigert til port 8080.
Til nå hadde jeg ignorert CI/CD-delen av utfordringen, som burde være nøkkelen til å fullføre den. Depotet inneholder en .gitlab-ci.yml fil, som gir konfigurasjonen for en GitLab CI/CD-pipeline. Hver gang du trykker til depotet, starter CI/CD-systemet, og en GitLab Runner kjører skriptene i denne YML-filen. Det er like bra som å oppnå ekstern kjøring av kode på serveren der GitLab Runner er installert, tenkte jeg.
Da jeg så nærmere, så jeg en rsync skript som kopierer alle filene fra Git-depotet til katalogen på webserveren som nettstedet ble servert fra. Først prøvde jeg å bruke rsync å reversere dataflyten ved å kopiere alle filene fra webserveren til Git-depotet, men uten å lykkes.
Etter mye hypotesetesting fikk jeg til slutt min banebrytende innsikt: I stedet for å prøve å "fikse" WordPress-nettstedet eller kjøre ondsinnede skript via byggesystemet, server et nettsted som lekker informasjon fra nettserveren. Innsiden index.php (plassert på toppnivået i depotet), kan jeg kommentere koden som laster WordPress-nettstedet og kjøre PHP-kommandoer som sonderer webserveren.
Faktisk kan jeg til og med kjøre skallkommandoer med PHP. jeg fant det passere gjennom() fungerte lett.
In index.php, Jeg brukte // å kommentere ut to linjer og jeg la til passthru('ls -la /'); på siste linje. Dette oppretter et nettsted som viser alle filene i rotkatalogen til webserveren:
Så presset jeg denne endringen til Git-depotet og GitLab CI/CD-systemet tok seg av å oppdatere nettstedet for meg:
Ah, Elfen-ringen må være med flag.txt! Jeg gjentok de forrige trinnene, men denne gangen brukte jeg passthru('cat /flag.txt'); avslører Elfen-ringen neste gang jeg ba om nettstedet:
Videre til den tredje ringen.
3. Nettring
Den morsomste utfordringen for meg var Open Boria Mine Door, selv om Glamtariel's Fountain var interessant samtidig som den presenterte gåter.
Åpne døren til Boria-gruven
I Open Boria Mine Door ble vi presentert med seks pinner eller miniutfordringer for å omgå inndatavalidering eller en Retningslinjer for innhold for å koble inn- og utløpsrørene mellom pinnene, inkludert matching av rørfargene. For de fleste pinner brukte jeg HTML til å skrive en liste over sammenhengende bokstav 'o'er. Her er min endelige løsning:
Pinne 1
Det var ingen validering for Pin 1, så det var et enkelt spørsmål om HTML og innebygd CSS:
<p style=“letter-spacing: -4px; margin: 0; padding: 0;”>oooooooooooooo</p> |
Pinne 2
Pin 2 hadde en innholdssikkerhetspolicy som ikke tillot JavaScript, men tillot innebygd CSS, så det var ikke noe problem for metoden min:
1 2 3 4 5 6 7 8 9 10 11 12 |
<ul style=“list-style: none; line-height:0.5; letter-spacing: -4px; margin: 0; padding: 0;”> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>oooooooooooooo</li> </ul> |
Pinne 3
Pin 3 hadde en innholdssikkerhetspolicy som ikke tillot CSS, men tillot innebygd JavaScript, så jeg brukte JavaScript til å endre stilene i stedet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<script> document.write(“” + “<ul id=’o’>” + “<li>o</li>” + “<li>oooooooooooooooooooooo</li>” + “<li>o</li><li>o</li><li>o</li><li>o</li>” + “</ul>”); const o = document.getElementById(‘o’); o.style.color = “blue”; o.style.listStyle = “none”; o.style.lineHeight = “0.5”; o.style.letterSpacing = “-4px”; o.style.margin = “0”; o.style.padding = “0”; </script> |
Pinne 4
Pin 4 hadde ingen innholdssikkerhetspolicy, men den hadde en sanitizeInput-funksjon på klientsiden som ville fjerne doble anførselstegn, enkle anførselstegn, venstre vinkelparentes og høyre vinkel parentes. Trikset her var å innse at denne funksjonen ikke ble utløst ved å sende inn skjemaet, men av onblur begivenhet. Med andre ord utløste det å flytte musen bort fra inndatafeltet onblur arrangementet, renser eventuelle innspill. Løsningen ble å sende inn skjemaet ved å trykke på Enter tasten, mens du passer på å ikke flytte musepekeren utenfor grensene til inndatafeltet:
1 2 3 4 5 6 7 8 9 10 11 |
<ul style=“list-style: none; line-height:0.5; letter-spacing: -4px; margin: 0; padding: 0;”> <li>o</li> <li>o</li> <li>oooooooooooooo</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li>o</li> <li style=“color: blue;”>oooooooooooooo</li> </ul> |
Pinne 5
Pin 5 hadde det samme sanitizeInput funksjon og bypass sammen med en innholdssikkerhetspolicy som forbyr innebygd CSS, men tillater innebygd JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<script> document.write(“” + “<ul id=’o’>” + “<li>o</li>” + “<li>o</li>” + “<li class=’red’>oooooooooooooo</li>” + “<li><span class=’red’>o</span></li>” + “<li><span class=’red’>o</span></li>” + “<li><span class=’red’>o</span>” + “<span class=’blue’> ooooooooooo</span></li>” + “<li><span class=’red’>o</span>” + “<span class=’blue’> oo</span></li>” + “<li><span class=’red’>o</span>” + “<span class=’blue’> oo</span></li>” + “<li><span class=’red’>o</span>” + “<span class=’blue’> oo</span></li>” + “<li>o<span class=’blue’> oo</span></li>” + “<li>o<span class=’blue’> B</span></li>” + “</ul>”); const o = document.getElementById(‘o’); o.style.listStyle = “none”; o.style.lineHeight = “0.5”; o.style.letterSpacing = “-4px”; o.style.margin = “0”; o.style.padding = “0”; o.style.fontSize = “xx-large”; const reds = document.getElementsByClassName(“red”); for (let red of reds) { red.style.color = “red”; } const blues = document.getElementsByClassName(“blue”); for (let blue of blues) { blue.style.color = “blue”; } </script> |
Pinne 6
Til slutt renset ikke Pin 6 inndataene, men den brukte en strengere innholdssikkerhetspolicy som forbyr både innebygd CSS og JavaScript. Min løsning var å bruke utdatert HTML for å få stilene jeg trengte og bruke en tabell i stedet for en liste:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<table border=“0” frame=“void” rules=“none” cellpadding=“0” cellspacing=“0” width=“100%”> <tr bgcolor=“#00FF00”> <td><font color=“#00FF00” size=“7”>o</font></td> <td><font color=“#00FF00” size=“7”>o</font></td> <td><font color=“#00FF00” size=“7”>o</font></td> <td><font color=“#00FF00” size=“7”>o</font></td> </tr> <tr bgcolor=“red”> <td><font color=“red” size=“5”>o</font></td> <td><font color=“red” size=“5”>o</font></td> <td><font color=“red” size=“5”>o</font></td> <td><font color=“red” size=“5”>o</font></td> </tr> <tr bgcolor=“blue”> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> <td bgcolor=“red”><font color=“red” size=“9”>o</font></td> </tr> <tr bgcolor=“blue”> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> <td><font color=“blue” size=“9”>o</font></td> </tr> </table> |
Glamtariels fontene
Glamtariels fontene var en mulighet til å øve XML External Entity (XXE)-angrep. Det var ikke vanskelig å finne ut hvordan man definerer en egendefinert XML-enhet, definere en enhet som ber om en fil fra serveren og legge til den som en nyttelast til en HTTP-forespørsel. Den vanskeligste delen var å finne ut av gåtene i spillet for å vise veien til filene som serveren ville lekke. Her er gjennombruddsforespørselen som avslører plasseringen av gullringen:
Jeg vil tilby to erfaringer fra denne utfordringen. Først bruker du Konverter for innholdstype forlengelse i Å rape for å konvertere JSON-nyttelast til XML. For det andre, prøv å plassere XXE-nyttelasten i forskjellige tagger – det tok meg lang tid å finne ut at alt jeg måtte gjøre var å plassere &xxe; nyttelast i reqType tag i stedet for imgDrop tag.
Videre til den fjerde ringen.
4. Skyring
Å spille for Cloud Ring var en nybegynners inntog i Amazon Web Services (AWS) Command Line Interface (CLI).
Høydepunktet i dette settet med utfordringer var bruk trøffelsvin for å finne AWS-legitimasjon i et Git-depot og deretter utnytte dem til å autentisere som en AWS-bruker. En angriper som kommer til denne posisjonen kan bruke aws iam kommandoer for å spørre retningslinjene som gjelder for brukeren, og dermed hvilke skyaktiva som kan aksesseres og misbrukes.
Videre til den femte ringen.
5. Burning Ring of Fire
Den mest lærerike delen av dette settet med utfordringer var å lære om Merkle trær å utnytte en smart kontrakt og komme på forhåndssalgslisten for å kjøpe en ikke-fungibel token (NFT). Her var utfordringen å oppdage bevisverdiene som, sammen med lommebokadressen min og rotverdien til et Merkle Tree, beviste at jeg var med på forhåndssalgslisten.
Etter noen mislykkede forsøk på å gi bevisverdier, innså jeg at jeg aldri ville være i stand til å finne ut bevisverdiene for den oppgitte rotverdien fordi det ikke var noen måte å vite alle bladverdiene som ble brukt til å beregne den. Jeg trengte å endre rotverdien slik at jeg kunne gi et gyldig Merkle-tre.
Ved hjelp av Professor QPetabytes verktøy, Jeg laget et Merkle-tre fra to blader som består av min lommebokadresse og adressen til BSRS_nft smart kontrakt, som jeg fant ved å bruke Blockchain Explorer i blokk to av spillets Ethereum-blokkjede. Verktøyet genererte rotverdien til dette treet og bevisverdien for lommebokadressen min. Deretter brukte jeg Burp for å avskjære forespørselen til serveren og endret standard rotverdi slik at jeg kunne sende inn et gyldig Merkle Tree. Her er min NFT spor kjøpt til en fast pris på 100 KringleCoins:
Virkelig et stygt eksemplar.
Endelig
En stor takk til arrangørene av SANS Holiday Hack Challenge for å strekke tankene mine på nye måter og bidra til å utdype kunnskapen min om nettsikkerhet. Ikke bare gleder jeg meg til neste års utfordring, men jeg vil til og med prøve ut 2020- og 2021-utgavene av denne utfordringen. Og hvis du ikke har deltatt i denne utfordringen før, håper jeg disse høydepunktene har vakt interessen din.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: https://www.welivesecurity.com/2023/01/09/cracked-it-highlights-kringlecon-5-golden-rings/
- 1
- 10
- 100
- 11
- 202
- 2020
- 2021
- 2022
- 7
- 9
- a
- I stand
- Om oss
- adgang
- aksesseres
- oppnådd
- oppnå
- Handling
- la til
- Ytterligere
- adresse
- Etter
- Agent
- Alle
- tillate
- Selv
- Amazon
- Amazon Web Services
- Amazon Web Services (AWS)
- analyse
- analysere
- analyserer
- og
- Påfør
- Eiendeler
- angripe
- forsøk
- godkjenne
- avatar
- award
- AWS
- dårlig
- fordi
- før du
- være
- BEST
- mellom
- Stor
- Blokker
- blockchain
- Blå
- kjøpt
- Branch
- Break
- bryte ut
- Breaking
- gjennombrudd
- bygge
- kjøpe
- som heter
- hvilken
- Catch
- sertifikat
- sertifikater
- utfordre
- utfordringer
- endring
- karakter
- sjekk
- kunde
- nærmere
- Cloud
- kode
- farge
- kommentere
- forplikte
- Felles
- fullføre
- fullført
- datamaskin
- gjennomføre
- Konfigurasjon
- Koble
- Tilkobling
- Tilkoblinger
- Består
- Container
- inneholder
- innhold
- kontrakt
- konvertere
- kopiering
- kunne
- skape
- opprettet
- skaper
- Credentials
- cryptocurrency
- Cryptocurrency lommebok
- CSS
- nysgjerrig
- skikk
- Cybersecurity
- dato
- Dato
- Desember
- utdype
- Misligholde
- Defenders
- definere
- oppdaget
- utviklere
- enhet
- gJORDE
- Die
- forskjellig
- vanskelig
- oppdage
- dns
- Docker
- dokument
- Av
- dobbelt
- opptjent
- lett
- Endpoint
- Endpoint sikkerhet
- enhet
- entry
- Miljø
- ethereum
- Ethereum blockchain
- Selv
- Event
- hendelser
- etter hvert
- Utfører
- gjennomføring
- Øvelse
- Utgang
- erfaring
- Exploit
- explorer
- forlengelse
- utvendig
- Noen få
- felt
- Figur
- filet
- Filer
- slutt~~POS=TRUNC
- Finn
- finne
- Først
- Fix
- fikset
- flyten
- folie
- etter
- streiftog
- skjema
- format
- Forward
- funnet
- fontene
- Fjerde
- fra
- fullt
- moro
- funksjon
- funksjonelle
- videre
- spill
- Games
- generert
- få
- gif
- gå
- GitHub
- gitt
- Gull
- Gyllen
- god
- innvilgelse
- hack
- hacking
- Hard
- hjelpe
- her.
- Gjemme seg
- Uthev
- striper
- hint
- historie
- ferie
- Hjemprodukt
- håp
- vert
- Hvordan
- Hvordan
- HTML
- HTTPS
- identifisert
- in
- I andre
- i spill
- Inkludert
- inkludering
- informasjon
- inngang
- innsikt
- i stedet
- interesse
- interessant
- Interface
- introdusert
- IP
- IP-adresse
- IT
- Javascript
- JSON
- nøkkel
- nøkler
- Kicks
- Vet
- kunnskap
- Siste
- føre
- lekke
- Lekkasjer
- lært
- læring
- Lessons
- Lessons Learned
- brev
- Nivå
- Li
- linje
- linjer
- Liste
- oppført
- lister
- leve
- laster
- ligger
- plassering
- Lang
- lang tid
- Se
- ser
- UTSEENDE
- oppslag
- Lot
- laget
- Hoved
- malware
- Margin
- matchende
- Saken
- max bredde
- betyr
- møter
- Minne
- meldinger
- metode
- Microsoft
- tankene
- Overvåke
- mer
- mest
- flytte
- flytting
- Mozilla
- navn
- nano
- innfødt
- Naviger
- nett
- nettverk
- nettverkstrafikk
- Ny
- neste
- NFT
- ikke-fungible
- ikke-soppbart token
- nord
- tilby
- ONE
- åpen
- drift
- operativsystem
- Opportunity
- rekkefølge
- arrangører
- Annen
- utenfor
- eieren
- del
- deltok
- deltakende
- banen
- PHP
- pins
- rør
- rørledning
- Sted
- plassering
- fly
- plato
- Platon Data Intelligence
- PlatonData
- Politikk
- politikk
- posisjon
- mulig
- PowerShell
- praksis
- presale
- presentert
- forrige
- pris
- fengsel
- privilegier
- probe
- Problem
- Progress
- fremtredende
- bevis
- beviste
- gi
- forutsatt
- gir
- innkjøp
- Skyv
- presset
- Rask
- raskt
- radar
- spenner
- realisere
- realisert
- motta
- mottar
- .
- rekord
- Gjenopprette
- Rød
- fjernkontroll
- gjentatt
- Repository
- anmode
- forespørsler
- påkrevd
- retur
- Avslørt
- avslørende
- reversere
- Ride
- Ringe
- root
- regler
- Kjør
- runner
- rennende
- skript
- Søk
- Sekund
- sekunder
- Secret
- sikkerhet
- Serien
- betjene
- Tjenester
- sett
- Del
- Shell
- bør
- side
- Enkelt
- ganske enkelt
- enkelt
- SIX
- Smart
- smart kontrakt
- So
- Soft
- løsning
- løse
- noe
- kilde
- kildekoden
- Rom
- står
- opphold
- Steps
- Still
- lagret
- strengere
- stil
- send
- suksess
- mistenkelig
- byttet om
- syntaks
- system
- bord
- TAG
- ta
- TD
- Technologies
- test
- Testing
- De
- Kilden
- Tredje
- trodde
- tre
- Gjennom
- tid
- til
- token
- også
- verktøy
- verktøy
- topp
- spor
- trafikk
- Transaksjoner
- utløst
- etter
- oppdatering
- URL
- bruke
- Bruker
- validering
- verdi
- Verdier
- av
- video
- videospill
- lommebok
- måter
- web
- webserveren
- webtjenester
- Nettsted
- hvilken
- mens
- bred
- vil
- uten
- WordPress
- ord
- Arbeid
- arbeidet
- ville
- skrive
- skriving
- XML
- år
- Du
- Din
- deg selv
- zephyrnet
- Zip