Verkkoon tunkeutuminen ja tiedustelu
Network Attacks and Reconnaissance
New course in 2025 spring! Network Attacks and Reconnaissance. In Finnish. Teaching together with Lari Iso-Anttila.
Now offering three offensive courses
- Penetration testing (Reached 5.0/5 feedback; autumn 2024; enroll 2024-05-15)
- Application Hacking and Vulnerabilities (First instance autumn 2024; enroll 2024-05-15)
- Network Attacks and Reconnaissance (This course, first instance 2025)
We're thinking in the lines of WLAN, RFID, maybe even some SDR sprinkled in.
Course name and code | Verkkoon tunkeutuminen ja tiedustelu ICI013AS3A-3001 (opinto-opas) |
Translated name | Network Attacks and Reconnaissance |
Timing | 2025 period 4, late spring (2025 w13-w20) |
Credits | 5 cr |
Classes | Pasila, classroom |
Max students | 30 |
Language | Finnish (+reading material in English) |
Remote | No, fully contact in Pasila classroom |
Feedback | New course, first instance. |
Services | Moodle: Verkkoon tunkeutuminen ja tiedustelu, Laksu. Voluntary extra: Tero's list. |
Teachers | Tero Karvinen and Lari Iso-Anttila |
First class | 2025-03-27 w13 Thu 11:00 pa5001 |
Enroll | in Peppi |
Updates on this course: subscribe Tero's newsletter.
This page will keep updating before and during the course.
Aikataulu
Päivä | Aihe, ope |
---|---|
2025-03-27 w13 Thu | 1. Kokonaiskuva: teoria, tärkeimmät mallit - Tero |
2025-04-03 w14 Thu | 2. Vierailija: Olli Parviainen, Software engineering professional, Grand Vizier Ltd: GPS Jamming & Spoofing. Tero: Liikenteen sieppaaminen ja analyysi - Tero |
2025-04-10 w15 Thu | 3. Vierailija: Juho whois Jauhiainen, DFIR; Accenture. Tero: Ohjelmaradio ja spektri - Tero |
2025-04-17 w16 Thu | 4. NFC ja RFID - Lari |
2025-04-24 w17 Thu | 5. Laboratorio- ja simulaatioympäristöt hyökkäyksissä - Lari |
2025-05-01 w18 Thu | (Vappu, ei opetusta.) |
2025-05-08 w19 Thu | 6. WiFi - Lari |
2025-05-15 w20 Thu | 7. Lipunryöstö - Tero, Lari |
Opetus torstaisin 11:00-13:45 pa5001.
Läppäri mukaan, Linux virtuaalikoneessa. (Apple Mac-käyttäjät: kurssilla pitää pystyä ajamaan tavallisia amd64-binäärejä, suosittelemme "tavallista PC-läppäriä" eli amd64-prosessoria. Tavalliset amd64-binäärit eivät toimi M1, M2, M3, M4 Maceissa ainakaan helposti.)
Aikataulu on alustava ja kurssi on edistynyt, joten aiheet voivat vielä muuttua kurssin aikana.
Lähtötaso
Kurssin alkaessa tulee osata
- Verkkojen perusteet
- Linuxin alkeet
- Asentaa Linux virtuaalikoneeseen omalle koneelle
Millä tahansa tavalla hankitut esitiedot kelpaavat. Tiedot on voinut hankkia esimerkiksi kursseilla "Linux palvelimet" tai "Tietoverkkojen perusteet", mutta itse opeteltu sopii myös.
Esitiedot tarkistetaan tarvittaessa kyselyllä, ja kurssille valittavat voidaan tarvittaessa valita alkutestin perusteella.
Voit halutessasi kerrata tai opetella taidot alta ennen kurssia. Jos osaat aiheet jo, kertauspakettia ei tarvitse lukea.
Kertauspaketti
Jos osaat nämä asiat jo, et tarvitse kertauspakettia.
Jos kurssilla järjestetään alkutesti, sen kysymykset eivät välttämättä rajoitu tässä lueteltuihin lähteisiin.
Verkkojen perusteet
Nämä ovat siis jokapäiväisiä TCP/IP:n perusteita, joita olet varmaan joskus käyttänyt.
- IP-osoite (ip address), maski (network mask), nimipalvelin (domain name server), oletusreititin (default gateway)
- Asiakas-palvelin-arkkitehtuuri (client-server)
- Portti, kuunteleva portti, yläportti (ephemeral port), muutama tärkein TCP-portti (22, 53, 80, 443)
- Pinomallin ajatus (abstraction layers, kerros puhuu vain viereiselle kerrokselle)
- TCP/IP-pinon neljä kerrosta (application esim. HTTP, transport TCP, Internet IP, Link ARP)
- Seuraavan hypyn reitityksen perusajatus (next hop routing, ei reititystekniikoita)
- Verkkotyökalujen alkeet. Esimerkiksi oma ip-osoite (ip a, hostname -I), nimipalvelutiedot (host terokarvinen.com), onko portti auki (nc -vz localhost 80; telnet localhost 80), latenssin mittaus (ping 8.8.8.8).
Wikipedia: Internet protocol suite
Linuxin alkeet
Linuxia käytetään työkaluna. Perustaidot riittävät. Kurssi ei edellytä laajoja Linuxin ylläpitotaitoja.
- Komentokehotteen käyttö
- Pääkäyttäjän oikeudet (sudo)
- Pakentinhallinta (apt-get)
- Hakemistorakenne (esim. /home/tero/, /etc/, /, /var/log, /usr/bin/, /usr/local/bin/)
- Lokit (sudo journalctl -n 20; /var/log/apache2/error.log)
Opettele komennot tästä: Karvinen 2020: Command Line Basics Revisited
Helpointa kerrata nämä asentamalla Linux virtuaalikoneeseen ja leikkimällä sillä.
Linuxin asentaminen virtuaalikoneeseen
- Esimerkiksi Debianin asentaminen VirtualBoxiin (ohje alla)
- Voit käyttää muitakin virtualisointiratkaisuja, jos pystyt itse soveltamaan ja ratkomaan niihin liittyvät haasteet (esim QEMU, lib-virt, virt-manager...)
- Jos oma koneesi on uusi M1, M2 tai M3-prosessorilla varustettu Mac, niin tulee osata asentaa Linux virtuaalikoneeseen tässä (arm64) ympäristössä.
Tällä asennusohjeella opiskelijat ovat asentaneet satoja Linuxeja: Install Debian on Virtualbox - Updated 2024
Notes on Mac M1 install: Carr 2024: a) Bookworm
Läksyt
h0 Hei maailma
Vapaaehtoinen tehtävä.
a) Vapaaehtoinen: Hei maailma. Raportti sivuna weppiin. Palauta linkki Laksuun ja ristiinarvioi vähintään kaksi.
Vinkit
- Karvinen 2023: Create a Web Page Using Github
h1 Sniff
- x) Lue ja tiivistä. (Tässä x-alakohdassa ei tarvitse tehdä testejä tietokoneella, vain lukeminen tai kuunteleminen ja tiivistelmä riittää. Tiivistämiseen riittää muutama ranskalainen viiva.)
- Karvinen 2025: Wireshark - Getting Started
- Karvinen 2025: Network Interface Names on Linux
- a) Linux. Asenna Debian tai Kali Linux virtuaalikoneeseen. (Tätä alakohtaa ei poikkeuksellisesti tarvitse raportoida, jos sinulla ei ole mitään ongelmia. Jos on mitään haasteita, tee täsmällinen raportti)
- b) Ei voi kalastaa. Osoita, että pystyt katkaisemaan ja palauttamaan virtuaalikoneen Internet-yhteyden.
- c) Wireshark. Asenna Wireshark. Sieppaa liikennettä Wiresharkilla. (Vain omaa liikennettäsi. Voit käyttää tähän esimerkiksi virtuaalikonetta).
- d) Oikeesti TCP/IP. Osoita TCP/IP-mallin neljä kerrosta yhdestä siepatusta paketista. Voit selityksen tueksi laatikoida ne ruutukaappauksesta.
- e) Mitäs tuli surffattua? Avaa surfing-secure.pcap. Tutustu siihen pintapuolisesti ja kuvaile, millainen kaappaus on kyseessä. Tässä siis vain lyhyesti ja yleisellä tasolla. Voit esimerkiksi vilkaista, montako konetta näkyy, mitä protokollia pistää silmään. Määrästä voit arvioida esimerkiksi pakettien lukumäärää, kaappauksen kokoa ja kestoa.
- f) Vapaaehtoinen, vaikea: Mitä selainta käyttäjä käyttää? surfing-secure.pcap (Päivitys 2025-03-31 w14 ma - muutin tehtävän vapaaehtoiseksi Giang:n suosituksesta)
- g) Minkä merkkinen verkkokortti käyttäjällä on? surfing-secure.pcap
- h) Millä weppipalvelimella käyttäjä on surffaillut? surfing-secure.pcap
- Huonoja uutisia: yhteys on suojattu TLS-salauksella.
- i) Analyysi. Sieppaa pieni määrä omaa liikennettäsi. Analysoi se, eli selitä mahdollisimman perusteellisesti, mitä tapahtuu. (Tässä pääpaino on siis analyysillä ja selityksellä, joten liikennettä kannattaa ottaa tarkasteluun todella vähän - vaikka vain pari pakettia. Gurut huomio: Selitä myös mielestäsi yksinkertaiset asiat.)
Vinkit
- Karvinen 2024: Install Debian on Virtualbox - Updated 2024
- Verkkoyhteyttä testatessa voi vaikkapa ottaa yhteyttä Internet-mammuttien nimipalvelimiin, joilla on helposti muistettavat numerot
- ping 1.1.1.1 # Cloudfare
- ping 8.8.8.8 # Google
- TCP/IP-pinosta löytyy hyvä kertaus: Wikipedia: Internet protocol suite
- Läpikävely selaimen selvittämiseen kohdassa f. Giang 2025: H1 Sniff: f) Mitä selainta käyttäjä käyttää? (spoiler)
h2: Lempiväri: violetti
h2 Taustaa
Tässä taustaosiossa olevia linkattuja artikkeleita ei tarvitse lukea tai tiivistää, ellei tehtävissä erikseen pyydetä.
Tämän tehtävän tavoite on tunnistaa hyökkäystyökaluja; ja välttää tunnistamista.
Mitään ulkopuolisia koneita ei saa porttiskannata. Irrota tarvittaessa koneet Internetistä testien ajaksi. Kohdista kaikki hyökkäykset ja porttiskannaukset vain annettuihin harjoitusmaaleihin. Tehtävän saa aloittaa vasta, kun on hyväksynyt kurssin säännöt.
Kybertappoketjusta (kuva, artikkeli) opimme, että hyökkääjä altistuu tunnistamiselle hyökkäyksen jokaisessa vaiheessa. Työkalut jättävät jälkiä, joista hyökkäyksen voi tunnistaa.
Itse hyökätessämme voimme asentaa laboratorioon puolustajan järjestelmää muistuttavan ympäristön. Silloin voimme säätää hyökkäystyökalut vaikeasti tunnistettaviksi.
Tässä harjoituksessa
- Tunnistetaan hyökkääjän porttiskannaus
- Kilpavarustellaan - hyökkääjä piiloutuu, mutta riittäkö se?
- Muokataan hyökkäystyökalua väistämään tunnistusta
- Arvioidaan omia hyökkäystyökaluja kahdesta näkökulmasta
- Verkkoliikenne - yleinen tapa
- Kohdejärjestelmän loki - erityinen, tiettyyn puolustajaan sovellettu
Läheiset käsitteet (taustatietoa, ei tarvitse tiivistää eikä lukea kokonaan)
- Tuskan pyramidi (Bianco 2013: Pyramid of Pain)
- Kybertappoketju (Hutchins et al 2011: Cyber Kill Chain)
- Timanttimalli (Caltagirone et al 2013: Diamond Model)
- MITRE ATT&CK (Mitrellä jäi caps-lockki JUMIIN)
h2 Tehtävänannot
Kaikissa kohdissa edellytetään analyysia ja selitystä. Selvitä ja selitä siis komentojen ja komentoriviparametrien merkitys. Selitä, mitä tulokset tarkoittavat; ja mitä niistä tulisi ymmärtää. Lue vinkit, ennenkuin aloitat.
- x) Lue ja vastaa lyhyesti kysymyksiin. Tässä alakohdassa x ei tällä kertaa tarvitse lukea artikkeleita kokonaan, ei tarvitse tiivistää niitä, eikä tehdä testejä koneella.
- Selitä tuskan pyramidin idea 1-2 virkkeellä. Bianco 2013: Pyramid of Pain. (Katso eritoten pyramidin kuvaa.)
- Selitä timanttimallin (Diamond Model) idea 1-2 virkkeellä. Tekijä esittelee sen aika juhlallisesti, voit myös etsiä yksinkertaisempia artikkeleita hakukoneella tai kelata suoraan timantin kuvaan. Caltagirone et al 2013: Diamond Model
- a) Apache log. Asenna Apache-weppipalvelin paikalliselle virtuaalikoneellesi. Surffaa palvelimellesi salaamattomalla HTTP-yhteydellä, http://localhost . Etsi omaa sivulataustasi vastaava lokirivi. Analysoi yksi tällainen lokirivi, eli selitä sen kaikki kohdat. (Jos Apache ei ole kovin tuttu, voit tätä tehtävää varten vain asentaa sen ja testata oletusweppisivulla. Eli ei tarvitse tehdä omia kotisvuja tms.)
- b) Nmapped. Porttiskannaa oma weppipalvelimesi käyttäen localhost-osoitetta ja 'nmap -A' päällä. Selitä tulokset. (Pelkkä http-portti 80/tcp riittää)
- c) Skriptit. Mitkä skriptit olivat automaattisesti päällä, kun käytit "-A" parametria? (Näkyy avoimien porttinumeroiden alta, http-blah, http-blöh...).
- d) Jäljet lokissa. Etsi weppipalvelimen lokeista jäljet porttiskannauksesta (NSE eli Nmap Scripting Engine -skripteistä skannauksessa). Löydätkö sanan "nmap" isolla tai pienellä? Selitä osumat. Millaisilla hauilla tai säännöillä voisit tunnistaa porttiskannauksen jostain muusta lokista, jos se on niin laaja, että et pysty lukemaan itse kaikkia rivejä?
- e) Wire sharking. Sieppaa verkkoliikenne porttiskannatessa Wiresharkilla. Huomaa, että localhost käyttää "Loopback adapter" eli "lo". Tallenna pcap. Etsi kohdat, joilla on sana "nmap" ja kommentoi niitä. Jokaisen paketin jokaista kohtaa ei tarvitse analysoida, yleisempi tarkastelu riittää.
- f) Net grep. Sieppaa verkkoliikenne 'ngrep' komennolla ja näytä kohdat, joissa on sana "nmap".
- g) Agentti. Vaihda nmap:n user-agent niin, että se näyttää tavalliselta weppiselaimelta.
- h) Pienemmät jäljet. Porttiskannaa weppipalvelimesi uudelleen localhost-osoitteella. Tarkastele sekä Apachen lokia että siepattua verkkoliikennettä. Mikä on muuttunut, kun vaihdoit user-agent:n? Löytyykö lokista edelleen tekstijono "nmap"?
- i) Hieman vaikeampi: LoWeR ChEcK. Poista skritiskannauksesta viimeinenkin "nmap" -teksti. Etsi löytämääsi tekstiä /usr/share/nmap -hakemistosta ja korvaa se toisella. Tee porttiskannaus ja tarkista, että "nmap" ei näy isolla eikä pienellä kirjoitettuna Apachen lokissa eikä siepatussa verkkoliikenteessä. (Tässä tehtävässä voit muokata suoraan lua-skriptejä /usr/share/nmap alta, 'sudoedit'. Muokatun version paketoiminen siis rajataan ulos tehtävästä.)
- j) Vapaaehtoinen, vaikea: Invisible, invincible. Etsi jokin toinen nmap:n skripti, jonka verkkoliikenteessä esiintyy merkkijono "nmap" isolla tai pienellä. Muuta nmap:n koodia niin, että tuo merkkijono ei enää näy verkkoliikenteessä.
Vinkit
- Nämä komennot ovat ulkomuistista, niissä saattaa olla kirjjoitusvirheittä.
- Apachen asennus
- sudo apt-get update
- sudo apt-get install apache2
- sudo systemctl start apache2
- Apachen lokit
- /var/log/apache2/
- sudo tail -F /var/log/apache2/access.log
- (Useimmat muut lokit ovat nykyisin 'sudo journalctl --follow')
- Porttiskannaus
- 'sudo nmap -A localhost'
- 'sudo nmap -T4 -vv -A -p 80 localhost'
- Vain omia koneita saa porttiskannata
- Kannattaa irrottaa kone Internetistä testien ajaksi
- KKO 2003:36 ja tämä siis 17-vuotiaalle eli juridisesti lapselle. Tekopäivä 1998, oikeudessa edelleen 2003. Käsittely oikeudessa kesti siis pidempään kuin mitä taposta olisi tullut istuttavaa. Esimerkki eri henkilöistä ja tapauksesta: Taposta vankeutta alle 7 vuotta, ensikertalaisen alennus 50%, istuttavaa noin 3.5 vuotta.
- Wireshark
- Näytä vain paketit, joissa on tietty sana? Dislay filter: frame contains "nmap"
- sudo ngrep -d lo -i nmap
- Nmap
- --script-args http.useragent="BSD experimental on XBox350 alpha (emulated on Nokia 3110)"
- Mitä tiedostoja on asentunut nmap:n mukana? 'dpkg --listfiles nmap nmap-common'
- Missä niistä mainitaan jokin tietty skripti, vaikkapa http-title? 'dpkg --listfiles nmap nmap-common |grep http-title'
- Nmap:n skriptit ja niiden käyttämä kirjasto löytyvät /usr/share/nmap/
- Voit hakea jotain hakusanaa kaikista hakemistoista työhakemistosta alaspäin
- grep -ir "tero"
h3 Aaltoja harjaamassa
Lapsena softaradiot olivat tieteisfiktiota. Sitten salaisia projekteja. Sitten kalliita. Ja nyt käytössämme alkaen 25 EUR.
Tässä harjoituksessa analysoit siepattuja signaaleja sekä automaattisesti että hieman myös käsin.
Lue myös vinkit ennen kuin aloitat käytännön harjoitukset.
- x) Lue ja tiivistä. (Tässä x-alakohdassa ei tarvitse tehdä testejä tietokoneella, vain lukeminen tai kuunteleminen ja tiivistelmä riittää. Tiivistämiseen riittää muutama ranskalainen viiva.)
- Hubacek 2019: Universal Radio Hacker SDR Tutorial on 433 MHz radio plugs (Video, alkaen 3:19 ja päättyen 7:40. Yhteensä noin 4 min.)
- Cornelius 2022: Decode 433.92 MHz weather station data
- Vapaaehtoinen, vaikeahko: Lohner 2019: Decoding ASK/OOK_PPM Signals with URH and rtl_433
- a) WebSDR. Etäkäytä WebSDR-ohjelmaradiota, joka on kaukana sinusta ja kuuntele radioliikennettä. Radioliikenne tulee siepata niin, että radiovastaanotin on joko eri maassa tai vähintään 400 km paikasta, jossa teet tätä tehtävää. Käytä esimerkkinä julkista, suurelle yleisölle tarkoitettua viestiä, esimerkiksi yleisradiolähetystä. Kerro löytämäsi taajuus, aallonpituus ja modulaatio. Kuvaile askeleet ja ota ruutukaappaus. (Tehtävässä ei saa ilmaista sellaisen viestin sisältöä tai olemassaoloa, joka ei ole tarkoitettu julkiseksi. Voit sen sijaan kuvailla, miten sait julkisen radiolähetyksen kuulumaan kaiuttimistasi. Julkisten, esimerkiksi yleisradiolähetysten sisältöä saa tietysti kuvailla.)
- b) rtl_433. Asenna rtl_433 automaattista analyysia varten. Kokeile, että voit ajaa sitä.
'./rtl_433' vastaa "rtl_433 version 25.02 branch..." - c) Automaattinen analyysi. Mitä tässä näytteessä tapahtuu? Mitä tunnisteita (id yms) löydät? Converted_433.92M_2000k.cs8. Analysoi näyte 'rtl_433' ohjelmalla.
- d) Too compex 16? Olet nauhoittanut näytteen 'urh' -ohjelmalla .complex16s-muodossa. Muunna näyte rtl_433-yhteensopivaan muotoon ja analysoi se. Näyte Recorded-HackRF-20250411_183354-433_92MHz-2MSps-2MHz.complex16s
- e) Ultimate. Asenna URH, the Ultimate Radio Hacker.
- Tarkastele näytettä 1-on-on-on-HackRF-20250412_113805-433_912MHz-2MSps-2MHz.complex16s. Siinä Nexan pistorasian kaukosäätimen valon 1 ON -nappia on painettu kolmesti. Käytä Ultimate Radio Hacker 'urh' -ohjelmaa.
- f) Yleiskuva. Kuvaile näytettä yleisesti: kuinka pitkä, millä taajuudella, milloin nauhoitettu? Miltä näyte silmämääräisesti näyttää?
- g) Bittistä. Demoduloi signaali niin, että saat raakabittejä. Mikä on oikea modulaatio? Miten pitkä yksi raakabitti on ajassa? Kuvaile tätä aikaa vertaamalla sitä johonkin. (Monissa singaaleissa on line encoding, eli lopullisia bittejä varten näitä "raakabittejä" on vielä käsiteltävä)
- h) Vapaaehtoinen: Sdr++. Kokeile sdr++ -sovellusta ja esittele sillä jokin "hei maailma" -tyyppinen esimerkki.
- i) Vapaaehtoinen, vaikeahko: GNU Radio. Asenne GNU Radio ja tee sillä yksinkertainen "Hei maailma".
Lisäaika: Yksi ilta lisäaikaa. Tämän tehtävän h3 saa poikkeuksellisesti palauttaa 60 min ennen oppitunnin alkua, eli 2025-04-17 w16 torstaina 16:40.
Vinkit
- WebSDR
- Löydät asemia hakukoneilla. Niitä voi käyttää selaimella.
- Valitse taajuus ja modulaatio. Säätele, kunnes radiolähetys kuuluu kaiuttimista.
- rtl_433
- Purkaa automaattisesti lukuisia protokollia
- Tukee muitakin taajuuksia kuin 433 MHz
- Kalissa 'sudo apt-get install rtl_433' (ja Sid:ssä)
- Debianissa ja muissa
- Projektin Github-sivulta merbanan/rtl_433
- Releases-sivulta tuorein versio, jossa on:
- Linux
- amd64
- SoapySDR (ei vaikuta tähän harjoitukseen, mutta vaaditaan esim HackRF-tukeen)
- Omaan järjestelmään sopiva OpenSSL versio, Debian 12-Bookworm kanssa 3
- $ sudo apt-get -y install atool wget libssl-dev libtool libusb-1.0-0-dev librtlsdr-dev rtl-sdr libsoapysdr-dev
- $ wget https://github.com/merbanan/rtl_433/releases/download/25.02/rtl_433-soapysdr-openssl3-Linux-amd64-25.02.zip
- $ aunpack rtl*.zip
- Voi lukea suoraan radiolta (oletus) tai tiedostosta
- $ rtl_433 -r foo_433.92M_1000k.cs8
- $ man rtl_433
- Tiedostomuodon muuttaminen 'urh' complex16s -> 'rtl_433' cs8
- Vain tiedoston nimi muuttuu
- Tiedoston nimessä pitää olla oikea taajuus (center frequency) ja näytteenottotaajuus (sample rate)
- Erottimena alaviiva
- foo_433.92M_1000k.cs8
- File name meta data
- Ultimate Radio Hacker 'urh'
- URH avulla voi analysoida lähetteitä
- Tässä kokeilemme analyysin alkuvaiheita, joissa saadut bitit eivät vielä ole niitä lopullisia bittejä
- Helppo asennus, sopii valmiiksi kaapattujen signaalien analyysiin
- $ sudo apt-get update
- $ sudo apt-get -y install pipx
- $ pipx install urh
- $ pipx ensurepath
- sulje ja avaa terminaali
- $ urh
- URH graafinen käyttöliittymä aukeaa
- Signaalien sieppaamiseen tarvitaan laitetuki omalle softaradiolle. Tätä varten jouduin itse kääntämään sorsista ja säätelemään. Tässä tehtävässä et tarvitse laitetukea softaradiolle.
- Voit leikata (crop) signaalia valitsemalla sen aallosta. Crop löytyy kontekstivalikosta, joka aukeaa hiiren oikealla napilla.
- Gqrx löytyy Debianin paketinhallinnasta
- Läpikävely (walktrough / spoiler): Nurminen 2025: h3 Aaltoja harjaamassa