Mistä tässä on kyse?

Se tapahtuu niin usein minulle… jokin on outoa tai ei toimi odotetusti, ja kysymys kuuluu: “Mikä on meneillään? Miksi asiakas tai palvelin käyttäytyy näin?” Usein nämä ovat ongelmia, jotka liittyvät verkkoon.

Eräs tietoturvatutkija sanoi minulle kerran: “Jos haluat ymmärtää, miten järjestelmä toimii, sinun on ymmärrettävä verkkoliikenne. Lähes jokainen ongelma voidaan diagnosoida verkon tasolla.” Omassa kokemuksessani: Näyttää siltä, että se on totta. 🥳

Valitettavasti kokemukseni mukaan monet ihmiset eivät tiedä, miten verkkoliikennettä voidaan tallentaa Windowsissa, ja ainoa ratkaisu on “asennetaan Wireshark”.

No, vaikka Wireshark on loistava työkalu, se ei ole ainoa ratkaisu ja todennäköisesti ei paras ratkaisu nopeaan ja kertaluonteiseen tallennukseen. On ehdottomasti parempia ja todennäköisesti nopeampia ratkaisuja, erityisesti kun kyse on hyvin suojatuista palvelimista.



Huomioita tilanteesta

Kuten sanottu, Wireshark on tehokas työkalu ja enemmän tai vähemmän de facto -standardi verkkoprotokollan analysoijana. Tulet varmasti käyttämään sitä analysoidaksesi tallennettua liikennettä. Mutta Wiresharkin haittapuoli on:

  • Se ei pysty tallentamaan ilman, että asennat lisäkomponentin tuotteen lisäksi: verkkosovittimen (WinPcap tai Npcap).
  • Se on elävä ja monimutkainen työkalu, jossa on paljon binäärejä ja haavoittuvuuksia.
  • Jokainen asennus palvelimelle on mahdollinen hyökkäysvektori ja lisää palvelimien monimuotoisuutta.

Se ei todennäköisesti ole työkalu, jonka haluat olla tuotantopalvelimella, erityisesti jos haluat vain tallentaa liikennettä nopeaa analyysiä varten. Kaikin keinoin, asenna se työasemallesi analysoidaksesi, mitä on tallennettu. Sinun ei tarvitse edes olla järjestelmänvalvojan oikeuksia analysoidaksesi Wiresharkilla! Wireshark toimii erinomaisesti kannettavana asennuksena ilman mitään järjestelmätason asennusta.

Joten, mitkä ovat vaihtoehdot?

Windowsissa on useita vaihtoehtoja työn suorittamiseen. Ja paras osa on, että sinun ei tarvitse asentaa mitään koneelle. Windowsissa on sisäänrakennettuja työkaluja työn tekemiseen. …ja ne ovat melko tehokkaita. Yhdistettynä PowerShelliin ja PSRemoting-kykyyn tämä skaalautuu helposti.

1. netsh trace - Vanha mutta kultainen

netsh trace komento on sisäänrakennettu työkalu Windowsissa, joka mahdollistaa verkkoliikenteen tallentamisen ilman lisäohjelmistoa. Se käyttää Windows Event Tracing for Windows (ETW) -kehystä verkkotapahtumien tallentamiseen ja lokittamiseen. Periaatteessa se on netsh trace start ja netsh trace stop tallennuksen aloittamiseksi ja lopettamiseksi, mutta on myös netsh trace show, joka näyttää nykytilan, ja netsh trace convert, joka muuntaa tallennetut tiedot luettavampaan muotoon.

Tässä on nopea yleiskatsaus käytettävissä olevista komennoista netsh trace:

Seuraavat komennot ovat käytettävissä:

Komennot tässä kontekstissa:
?              - Näyttää luettelon komennoista.
convert        - Muuntaa jälkitiedoston HTML-raportiksi.
correlate      - Normalisoi tai suodattaa jälkitiedoston uuteen tulostiedostoon.
diagnose       - Aloittaa diagnosointisession.
dump           - Näyttää konfiguraatiotiedoston.
export         - Vie skenaario WPR-profiiliin.
help           - Näyttää luettelon komennoista.
merge          - Yhdistää jälkitiedostoja ja lisää symboleja metatietoja.
postreset      -
show           - Listaa rajapinnat, tarjoajat ja jäljityksen tilan.
start          - Aloittaa jäljityksen.
stop           - Lopettaa jäljityksen.

Jos haluat nähdä apua komennolle, kirjoita komento, jota seuraa välilyönti, ja sitten
 kirjoita ?.

Nyt keskitymme start ja stop komentoihin, joita käytät verkkoliikenteen tallentamiseen. Nimeäminen on melko itsestään selvää, luulisin. Verkkoliikenteen tallentamiseksi sinun on määritettävä muutama lisäparametri. Periaatteessa sinun tarvitsee vain määrittää, että haluat tallentaa liikennettä. Se on yksinkertaisesti parametri capture=yes. Vaikka tämä on kaikki, mitä tarvitset vähimmäisvaatimuksena, on yksi parametri, jota suositellaan tehokkuuden vuoksi. Jos välität vain verkkoliikenteen tallentamisesta, voit poistaa netsh:n raportointikäyttäytymisen käytöstä report=disabled. Tämä nopeuttaa tallennusprosessia ja vähentää tallennetun tiedoston kokoa, koska se ei sisällä lisäraporttidataa. Muut parametrit voidaan käyttää tallennusprosessin mukauttamiseen tarpeidesi mukaan. Tietenkin voit määrittää, mihin tallennat jäljen ja mitä tallennat, mutta se ei ole pakollista.

Koska verkkoliikenteen tallentaminen on järjestelmätason operaatio ja vaikuttaa kaikkiin prosesseihin (ja kaikkiin käyttäjiin) järjestelmässä, sinun on suoritettava netsh trace komento(t) järjestelmänvalvojan oikeuksilla. Tässä on peruskomento verkkoliikenteen tallentamisen aloittamiseksi käyttäen netsh trace:

# Tallenna verkkoliikennettä "Ethernet" rajapinnassa ja tallenna se tiedostoon
netsh trace start capture=yes report=disabled

niin pian kuin sinulla on mitä tarvitset, voit lopettaa tallennuksen seuraavalla komennolla:

# Lopeta verkkoliikenteen tallennus
netsh trace stop


Tallennettu liikenne tallennetaan .etl-tiedostoon, jota voidaan analysoida myöhemmin. Jos haluat mukautetun tiedostonimen ja sijainnin tallennetuille tiedoille, voit määrittää sen tracefile-parametrilla.

# Tallenna verkkoliikennettä ja tallenna se tiettyyn tiedostoon
netsh trace start capture=yes report=disabled tracefile=C:\Administration\Logs\MyTraceFile.etl

Nyt kun olemme tallentaneet liikenteen, meidän on analysoitava se...

etl-tiedoston avaaminen Wiresharkissa vaatii - valitettavasti - lisäaskeleen. Mutta, pysy kanssani, se ei ole niin vaikeaa, eikä se vieläkään vaadi asennusta: Käytä vain etl2pcapng, Microsoftin tarjoamaa pientä työkalua, ja olet hyvässä vauhdissa. Se muuntaa etl-tiedoston pcapng-tiedostoksi, joka voidaan helposti avata Wiresharkissa analysointia varten.

# Muunna .etl-tiedosto .pcapng-muotoon
etl2pcapng nettrace.etl nettrace.pcapng

Tietenkin, komennossa tiedostonimi voi olla täysin määritelty polku, mukaan lukien aseman kirjain ja hakemistot. Tämä on vain nopea esimerkki.


Luotu etl-tiedosto voidaan poistaa muunnoksen jälkeen, jos et tarvitse sitä enää. pcapng-tiedosto on se, jota käytät analysointiin Wiresharkissa. Tämän menetelmän etuna on, että sinun ei tarvitse asentaa mitään järjestelmään, ja saat myös yksityiskohtaisemman tallennuksen, koska netsh trace tallentaa enemmän kuin vain verkkoliikennettä. Se tallentaa myös lisätietoja järjestelmästä ja prosesseista, mikä voi olla erittäin hyödyllistä vianetsinnässä ja analyysissä:


Tämä prosessi toimii melko hyvin kaikilla Windows-järjestelmillä aina Windows 7:stä ja Windows Server 2008 R2:sta lähtien. Ottaen huomioon, että tämä on melko hyvä sisäänrakennettu ratkaisu saadaksesi haluamasi. Kuten sanottu, kaikki tämä toimii ilman, että sinun tarvitsee asentaa mitään järjestelmään, mikä on valtava etu, erityisesti tuotantopalvelimilla. Voit vain suorittaa komennot, tallentaa liikenteen ja analysoida sen työasemallasi Wiresharkilla ilman mitään asennusta itse palvelimelle.

netsh trace -työkalussa on paljon enemmän parametreja ja vaihtoehtoja, jotka mahdollistavat tallennusprosessin mukauttamisen tarpeidesi mukaan. Esimerkiksi voit määrittää

  • protokollasuodattimet
  • Ethernet-tyyppisuodattimet
  • IP-osoitesuodattimet
  • tietyt rajapinnat tallennettavaksi
  • ja paljon muuta

Voit tarkastella kaikkia käytettävissä olevia vaihtoehtoja suorittamalla netsh trace show CaptureFilterHelp. Tämä antaa sinulle yksityiskohtaisen luettelon kaikista käytettävissä olevista suodattimista ja vaihtoehdoista, joita voit käyttää tallennuksesi mukauttamiseen. Omat suosikkini ovat:

# Tallentaaksesi vain IPv4-liikennettä:
Ethernet.Type=IPv4

# Tallentaaksesi vain TCP/UDP/ tai molemmat:
Protocol=TCP
Protocol=UDP
Protocol=(TCP,UDP)

# Rajoita tallennusta tiettyihin IP-osoitteisiin:
IPv4.SourceAddress=<IPv4-osoite>
IPv4.DestinationAddress=<IPv4-osoite>
IPv4.Address=(<IPv4-osoite>,<IPv4-osoite>)

Näiden vaihtoehtojen avulla sinun pitäisi olla varustettu tehokkaasti tallentamaan merkityksellisin liikenne analyysiä ja vianetsintää varten. Voit yhdistää suodattimet tallentaaksesi vain liikenteen, joka on relevanttia erityiseen käyttötarkoitukseesi, mikä voi auttaa sinua keskittymään tärkeisiin tietoihin ja vähentämään tallennuksen häiriöitä.

Voit löytää joitakin esimerkkejä kohdasta käytännön esimerkit alla.

2. pktmon - Uusi tulokas

Pktmon on uudempi sisäänrakennettu työkalu Windows 10:ssä / Windows Server 2019:ssä ja myöhemmissä versioissa, joka tarjoaa kätevämpiä pakettien valvontakykyjä.

Se on myös komentorivityökalu, joka mahdollistaa liikenteen tallentamisen, mutta se keskittyy enemmän pakettien valvontaan kuin netsh trace ja tarjoaa hieman käyttäjäystävällisemmän käyttöliittymän pakettisuodattimien hallintaan ja liikenteen tallentamiseen. Synteksi on hieman erilainen, mutta melko samanlainen. Jos tunnet netsh trace:n, sinun pitäisi tuntea olosi mukavaksi sen käytössä. Tässä on nopea yleiskatsaus käytettävissä olevista komennoista pktmon:

pktmon <komento> [VALINTA | apua]
    Edistynyt pakettien tallennus ja tapahtumien keruu.

Komennot
    filter     Hallitse pakettisuodattimia.
    list       Listaa pakettien käsittelykomponentit.

    start      Aloita 
```pakettien kaappaus, laskurit ja tapahtumien keruu.
    stop       Lopeta tietojen keruu.
    status     Kysy nykyistä tilaa.
    unload     Poista PktMon-ohjain.

    laskurit   Näytä nykyiset pakettien laskurit.
    reset      Nollaa pakettien laskurit.

    etl2txt    Muunna lokitiedosto tekstimuotoon.
    etl2pcap   Muunna lokitiedosto pcapng-muotoon.
    hex2pkt    Purkaa paketti heksadesimaalimuodossa.

    help       Näytä aputeksti tietyille komennoille.
               Esimerkki: pktmon start help

Koska se hyödyntää myös Windows Event Tracing for Windows (ETW) -kehystä verkko- tapahtumien kaappaamiseen, se tuottaa myös etl-tiedostoja. Tässä on nopea esimerkki siitä, miten käyttää:

# Aloita pakettien kaappaus ja tallenna tulos tiedostoon
pktmon start --capture pktmon.etl

# Lopeta kaappaus
pktmon stop

Kuten saatat huomata, vaikka syntaksi on hieman erilainen kuin netsh trace, se on melko lähellä. Voit ohittaa raportointiparametrin, joka on tarpeen vanhemmassa vastineessa. Tämä tekee kutsusta hieman lyhyemmän.


Tässä on todellinen etu pktmon: Toisin kuin klassisessa netsh trace, kaapattu data voidaan suoraan muuntaa .pcapng-tiedostoksi käyttämällä pktmonin sisäänrakennettua kykyä. Tämä tarkoittaa, että nykyisessä käyttöjärjestelmässä sinun ei tarvitse edes käyttää lisätyökalua etl2pcapng muuntamiseen.

Voit suoraan muuntaa kaapatun datan .pcapng-tiedostoksi analysoitavaksi Wiresharkilla:

# Muunna .etl-tiedosto .pcapng-muotoon
pktmon etl2pcap pktmon.etl

Luotu etl-tiedosto voidaan poistaa muuntamisen jälkeen, jos et tarvitse sitä enää. pcapng-tiedosto on se, jota käytät analysoimiseen Wiresharkissa. Koska pcapng-tiedosto sisältää vain liikennetiedot, eikä niin paljon lisätietoja järjestelmästä ja prosesseista, se on kevyempi kuin etl-tiedosto. Mutta pidemmässä kaappauksessa tai suurella liikenteellä se voi silti olla melko suuri.


Kuten netsh trace -komennossa, pktmon tarjoaa myös paljon suodatusvaihtoehtoja. Voit jälleen määrittää protokollasuodattimia, IP-osoitteita ja paljon muuta kaappauksen rajaamiseksi. Voit tarkastella kaikkia käytettävissä olevia vaihtoehtoja suorittamalla pktmon filter add help. Tämä antaa sinulle yksityiskohtaisen luettelon kaikista käytettävissä olevista suodattimista ja vaihtoehdoista, joita voit käyttää kaappauksen mukauttamiseen. Pääero on se, että sinun on lisättävä suodattimet ennen kaappauksen aloittamista, mikä on todellinen ero netsh trace -komennosta, jossa voit määrittää suodattimet suoraan aloituskomennossa. Mutta tämä ei ehkä ole niin iso ongelma, kun teet tämän skriptien kautta. Mielestäni tämä helpottaa komennon luettavuutta, koska aloituskomennossa ei ole paljon parametreja, vaan se on eriytetty ja jäsennelty.

Tässä on joitakin esimerkkejä suodattimista, joita voit käyttää pktmon-komennolla:

# Kaapataksesi vain IPv4-liikennettä:
pktmon filter add -p IPv4


# Kaapataksesi vain TCP/UDP tai molemmat:
pktmon filter add -p TCP
pktmon filter add -p UDP

# Rajoita kaappausta tiettyihin IP-osoitteisiin:
pktmon filter add -a IPv4.SourceAddress <IPv4-osoite>
pktmon filter add -a IPv4.DestinationAddress <IPv4-osoite> 
pktmon filter add -a IPv4.Address <IPv4-osoite>

Se, että voit suorittaa suodatinlisäyskomennot useita kertoja lisätäksesi useita suodattimia, voi olla melko hyödyllistä, koska se mahdollistaa suodatinmäärityksen rakentamisen vaiheittain ja sen järjestämisen. Voit myös luetella tällä hetkellä määritellyt suodattimet komennolla pktmon filter list nähdäksesi, mitkä suodattimet ovat tällä hetkellä aktiivisia ennen kaappauksen aloittamista.

3. Get-NetEventSession - PowerShellin natiivi tapa

Jos olet PowerShell-harrastaja, tässä on toinen tapa kaapata verkkoliikennettä käyttämällä Get-NetEventSession -cmdlet-komentoa, joka on osa NetEventPacketCapture-moduulia. Tämä cmdlet mahdollistaa verkkotapahtumasessioiden luomisen ja hallinnan, joita voidaan käyttää verkkoliikenteen kaappaamiseen. Vaikka tämä vaatii hieman enemmän tekstiä, PowerShell tarjoaa mielenkiintoisia ominaisuuksia:

  • Sisäänrakennettu tab-näppäimen täydentäminen parametreille
  • PowerShellin etäkäyttö sisäänrakennettujen -CimSession-parametrien kautta cmdlet-komentoissa
# Luo uusi verkkotapahtumasessio
$session = New-NetEventSession -Name "MySession" -LocalFilePath "C:\path\to\capture.etl"

# Lisää tarjoaja kaappaamaan verkkoliikennettä (esim. Microsoft-Windows-Kernel-Network)
Add-NetEventProvider -SessionName $session.Name -Name "Microsoft-Windows-Kernel-Network"

# Tarkista luotu sessio
$session


# Aloita sessio liikenteen kaappaamisen aloittamiseksi
$session | Start-NetEventSession

# Lopeta sessio kaappauksen päättämiseksi
$session | Stop-NetEventSession

Samalla tavalla kuin komentorivityökalut, kaapattu liikenne tallennetaan .etl-tiedostoon, jota voidaan analysoida muuntamisen jälkeen .pcapng-muotoon käyttäen etl2pcapng tai pktmon. En aio käsitellä tätä uudelleen, koska se on sama prosessi kuin edellä kuvattu.


Myönnän rehellisesti, että tämä ei ole suosikkitapani kaapata verkkoliikennettä, koska se on hieman monimutkaista käsitellä erilaisia komentoja ja verkkotapahtumasessioiden ja tarjoajien taustalla olevia käsitteitä. Mutta jos haluat pysyä täysin PowerShell-maailmassa, se on silti sisäänrakennettu ja tehokas tapa kaapata liikennettä.

käytännön esimerkki -osiossa löydät esimerkin, jossa käytin PowerShellin etäkäyttömahdollisuuksia verkkoliikenteen kaappaamiseen etäjärjestelmässä yhdistettynä edellä mainittuihin komentorivityökaluihin. Tämä on melko tehokas yhdistelmä, ja mielestäni ei ole mitään väärää käyttää komentorivityökaluja yhdessä PowerShellin kanssa. Kuten usein on… käytä sitä, mikä sopii parhaiten sinulle ja käyttötapasi. Ei ole olemassa yhtä oikeaa ratkaisua.

Vaikka tietenkin, ❤️ PowerShell ❤️ on melko lähellä yhtä oikeaa ratkaisua. 😁

4. GUI-tapa: Suorituskykymittari

Jos suosittelet klassista ja MMC-pohjaista graafista käyttöliittymää Windowsissa, voit käyttää myös sisäänrakennettua Suorituskykymittaria (PerfMon). PerfMonin avulla voit luoda tietojen keruusettejä, jotka voivat kaapata erilaisia suorituskykymittareita, mukaan lukien verkkoliikenteen.


Kaiken edellä mainitun työkalun taustalla on sama teknologia, Windows Event Tracing for Windows (ETW) -kehys, ja ne tarjoavat vain erilaisia käyttöliittymiä ja erilaisia kykyjä tapahtumien kaappaamiseen. Suorituskykymittari on vain ETW:n graafinen käyttöliittymä.

Kaapataksesi verkkoliikennettä Suorituskykymittarilla, voit seurata seuraavia vaiheita:

  1. Avaa Suorituskykymittari kirjoittamalla perfmon Käynnistä-valikkoon ja painamalla Enter.
  2. Laajenna vasemmassa paneelissa “Tietojen keruusetit” ja napsauta hiiren oikealla “Käyttäjän määrittämä”. Valitse “Uusi” > “Tietojen keruusetti”.
  3. Anna tietojen keruusetillesi nimi (esim. “Verkkoliikenteen kaappaus”) ja valitse “Luo manuaalisesti (Edistynyt)”. Napsauta “Seuraava”.
  4. Tietojen kerääjien luominen” -vaiheessa valitse “Suorituskykymittari” ja napsauta “Seuraava”.
  5. Napsauta “Lisää” lisätäksesi suorituskykymittareita. “Lisää mittareita” -valintaikkunassa laajenna “Verkkoliittymä” ja valitse kaapattavat mittarit (esim. “Bitejä yhteensä/sekunti”, “Paketteja/sekunti”). Napsauta “Lisää” ja sitten “OK”.
  6. Napsauta “Seuraava” ja määritä sijainti, johon haluat tallentaa kaapatut tiedot. Napsauta “Seuraava” ja sitten “Valmis” luodaksesi tietojen keruusetin.
  7. Aloita verkkoliikenteen kaappaaminen napsauttamalla hiiren oikealla uudelleen luotua tietojen keruusettiä (esim. “Verkkoliikenteen kaappaus”) ja valitse “Aloita”. Suorituskykymittarit alkavat kerätä tietoja.
  8. Lopettaaksesi kaappauksen napsauta hiiren oikealla tietojen keruusettiä uudelleen ja valitse “Lopeta”. Kaapattu data tallennetaan määritettyyn sijaintiin.


Tämä on erityisen hyödyllinen menetelmä, jos haluat kaapata suorituskykymittareita, jotka liittyvät verkkoliikenteeseen eri aikataulujen mukaan ja pidemmän ajan kuluessa. Se ei ole paras menetelmä nopeaan kaappaukseen ja analysointiin, mutta se voi olla erittäin hyödyllinen verkkosuorituskyvyn seuraamiseen ja analysoimiseen ajan myötä.

Lisäksi tällaiset määritellyt tietojen keruusetit voidaan helposti viedä ja tuoda muille järjestelmille, mikä voi olla erittäin hyödyllistä kaappaamisprosessin standardoimiseksi useilla palvelimilla tai työasemilla. Tämä on erityisen hyödyllistä, jos yhdistät erilaisia mittareita verkkoliikenteen kaappauksen kanssa, kuten CPU-käyttö, muistin käyttö, levyn I/O jne., saadaksesi kattavamman näkemyksen järjestelmän suorituskyvystä ja käyttäytymisestä verkkoliikenteen suhteen.

En mene tähän syvemmälle, koska tämän blogikirjoituksen pääasiallinen tarkoitus on näyttää, kuinka kaapata nopeasti ja konsolissa.

Käytännön esimerkki

Kaappaa vain HTTP- tai HTTPS-liikenne

Tämä voi olla yleinen käyttötapaus. Valitettavasti, niin kauan kuin tiedän, netsh trace start -komennossa ei ole sisäänrakennettua kykyä kaapata tiettyjä portteja. 😣 Suodattimet eivät salli olla niin tarkkoja. Mutta pktmon-komennolla voit tehdä tämän helposti. On syytä mainita, että tämä on mahdollista vain Windows Server 2019:ssä ja Windows 10+ -versioissa, jotka ovat myöhempiä kuin 1809.

Voit käyttää seuraavaa komentoa kaapataksesi vain HTTP- ja HTTPS-liikennettä:

pktmon filter add "http + https" -d IPv4 -t TCP -p 80 443
pktmon start --capture --file-name https_traffic.etl

pktmon stop
pktmon filter remove

Tallenna vain DNS-liikenne

Jos olet vain kiinnostunut tallentamaan DNS-liikennettä, voit käyttää seuraavaa komentoa tallentaaksesi vain DNS-liikennettä:

pktmon filter add "UDP DNS" -d IPv4 -t UDP -p 53
pktmon filter add "TCP DNS" -d IPv4 -t TCP -p 53
pktmon start --capture --file-name dns_traffic.etl

pktmon stop
pktmon filter remove

Tallenna vain SMTP-liikenne

Jos haluat tallentaa vain SMTP-liikennettä, voit käyttää seuraavaa komentoa tallentaaksesi vain SMTP-liikennettä:

pktmon filter add "SMTP" -d IPv4 -t TCP -p 25
pktmon start --capture --file-name smtp_traffic.etl

pktmon stop
pktmon filter remove

Tämä on vain toinen nopea esimerkki siitä, kuinka voit käyttää `pktmon`-suodatusominaisuuksia tallentaaksesi vain tiettyjä liikennetyyppejä.

Tallenna liikennettä netsh-tracen avulla tietyllä IP:llä

Jos sinun on pakko käyttää netsh trace, vanhempien käyttöjärjestelmien vuoksi tai jos haluat mieluummin käyttää sitä, suosittelen määrittämään IP-suodattimen järjestelmäsi IP-osoitteelle. Tällä tavalla voit leikata pois lähetykset ja muun liikenteen, joka ei todennäköisesti liity järjestelmääsi.

Valmistele ensin IP-suodattimesi ja tiedostopolku tallennusta varten:

$localIpList = (Get-NetIPAddress -AddressState Preferred -PrefixOrigin Dhcp, Manual -AddressFamily IPv4).ipaddress
$ipFilter = "($($localIpList -join ","))"
$filePath = "traffic.etl"

Aloita sitten tallennus IP-suodattimella:

netsh trace start capture=yes report=disabled overwrite=yes fileMode=circular Protocol="(UDP,TCP)" tracefile="$($filePath)" IPv4.Address=$ipFilter

Tarkista tallennuksen tila:

netsh trace show status

Toimi ja kun olet valmis, lopeta tallennus:

netsh trace stop

Tämän lähestymistavan avulla voit helposti tallentaa vain liikenteen, joka on relevanttia järjestelmällesi, mikä voi auttaa sinua keskittymään tärkeisiin tietoihin ja vähentämään melua tallennuksessasi. Tämä on erityisen hyödyllistä ympäristöissä, joissa on paljon verkkoliikennettä, jolloin kaiken tallentaminen johtaisi erittäin suureen ja hallitsemattomaan tallennustiedostoon.

Tallenna liikennettä PowerShell-etäyhteyden avulla

Haluaisin esitellä toisen käytännön käyttötapauksen, jota olen käyttänyt useita kertoja todellisessa elämässä. Suuremmissa ympäristöissä, joissa on useita palvelimia, ei ole kovin tehokasta kirjautua jokaiseen palvelimeen ja suorittaa tallennuskomentoja yksi kerrallaan.

Tässä PowerShell-etäyhteys pääsee loistamaan. 🎉

Voit yhdistää PowerShell-etäyhteysominaisuudet yllä olevien komentorivityökalujen kanssa tallentaaksesi liikennettä helposti mielivaltaisessa määrässä järjestelmiä. Tämä on mielestäni melko tehokas yhdistelmä!

Tässä on nopea esimerkki siitä, kuinka tehdä tämä:
(Ilmeisesti voit mukauttaa skriptiblokit sisältämään lisäsuodattimia tai parametreja tarpeidesi mukaan)

# Määritä etäpalvelimien lista, joilla haluat tallentaa liikennettä
$remoteServers = @("Server1", "Server2", "Server3")

# Määritä peruspolku ja tiedostonimi etäpalvelimilla
$remoteBasePath = "C:\Administration\Logs"
$remoteCaptureFileName = "traffic_http"

# Luo istunto etäpalvelimille
$sessions = New-PSSession -ComputerName $remoteServers

# Määritä skriptiblokki verkkoliikenteen tallentamiseksi pktmonin avulla
$scriptStart = {
    $filePath = "$($using:remoteBasePath)\$($using:remoteCaptureFileName)_$($env:COMPUTERNAME)_$(Get-Date -Format 'yyyy-MM-dd-HH-mm-ss').etl"
    
    PktMon.exe filter add "HTTP" -d IPv4 -t TCP -p 80
    PktMon.exe start --capture --file-name "$($filePath)"
}

# Suorita skriptiblokki jokaisella etäpalvelimella PowerShell-etäyhteyden avulla
Invoke-Command -Session $sessions -ScriptBlock $scriptStart

Nyt, toimi saadaksesi haluamasi…

Voit tarkistaa tallennuksen tilan jokaisella etäpalvelimella seuraavalla komennolla:

Invoke-Command -Session $sessions -ScriptBlock { PktMon.exe status }

Kun olet valmis, voit lopettaa tallennuksen ja muuntaa tallennetut tiedot .pcapng-muotoon jokaisella etäpalvelimella seuraavalla komennolla:

$scriptStop = {
    # Lopeta tallennus
    PktMon.exe stop | Out-Null
    
    # Poista suodattimet (puhdistuaksesi seuraavaa tallennusta varten)
    PktMon.exe filter remove | Out-Null
    
    # Muunna .etl-tiedosto .pcapng-muotoon
    PktMon.exe etl2pcap $filePath
    
    # Poista alkuperäinen .etl-tiedosto muunnoksen jälkeen
    Remove-Item -Path $filePath -Force
}
Invoke-Command -Session $sessions -ScriptBlock $scriptStop

Nyt olet tallentanut liikenteen jokaisella etäpalvelimella, mutta samalla sinulla on tallennustiedosto jokaisella palvelimella. Onneksi PowerShell auttaa sinua myös tässä tilanteessa. Voit käyttää samoja etäyhteysominaisuuksia kopioidaksesi tallennetut tiedostot paikalliselle työasemallesi analysoitavaksi Wiresharkilla. Voit käyttää Copy-Item-cmdletia -ToSession-parametrin kanssa kopioidaksesi tiedostot etäpalvelimilta paikalliselle koneellesi.

# Määritä paikallinen polku, johon haluat tallentaa tallennetut tiedostot
$localPath = Join-Path -Path $home -ChildPath "LocalData"

# Kopioi tallennetut tiedostot jokaiselta etäpalvelimelta paikalliselle koneelle
foreach ($session in $sessions) {
    $remoteFilePath = "$($remoteBasePath)\$($remoteCaptureFileName)_*.pcapng"
    Copy-Item -Path $remoteFilePath -Destination $localPath -FromSession $session
}

# Poista pcapng-tiedostot etäpalvelimilta kopioinnin jälkeen
Invoke-Command -Session $sessions -ScriptBlock {
    Remove-Item -Path ($filePath -replace ".etl", ".pcapng") -Force
}

Kun olet valmis, poista istunnot palvelimilta:

# Poista istunnot etäpalvelimilta
Remove-PSSession -Session $sessions

Kuten tämä esimerkki osoittaa, voit helposti tallentaa verkkoliikennettä useilla järjestelmillä, **yhdistämällä `PowerShellin` ja `pktmonin`**. Tämä lähestymistapa mahdollistaa verkkoliikenteen tehokkaan hallinnan ja analysoinnin ympäristössäsi ilman manuaalista väliintuloa tai mitään asennusta etäpalvelimille. Tämä esimerkki olettaa, että sinulla on järjestelmiä, joissa on - enemmän tai vähemmän - ajantasaiset Windows-versiot. Jos `pktmon` ei ole saatavilla järjestelmissäsi, voit vain korvata `pktmon`-komennot vastaavilla `netsh trace` -komennoilla.

Katso netsh-esimerkit yllä saadaksesi ideoita sen käyttämiseen. Skriptiblokkien yleinen rakenne pysyy samana.

Yhteenveto

Verkkoliikenteen tallentaminen Windowsissa voidaan HELPPOSTI tehdä käyttämällä erilaisia sisäänrakennettuja työkaluja, joilla on omat etunsa ja käyttötapansa. Riippumatta siitä, pidätkö komentorivityökaluista kuten netsh trace ja pktmon, tai graafisista käyttöliittymistä kuten Suorituskykymonitori, on vaihtoehtoja, jotka sopivat erilaisiin tarpeisiin ja mieltymyksiin.

Nopeisiin tallennuksiin ja analysointiin pktmon on loistava valinta sen helppokäyttöisyyden ja suoran muunnoskyvyn vuoksi. (Jos olet Windows Server 2019:ssä tai Windows 10+:n versiossa, joka on myöhempi kuin 1809) Vanhemmilla järjestelmillä netsh trace voi olla tehokas työkalu, joka -tekee työn- myös.

Ja niille, jotka pitävät GUI:sta, Suorituskykymonitori tarjoaa kattavan tavan tallentaa ja analysoida verkkosuorituskykymittareita. Lopulta paras työkalu verkkoliikenteen tallentamiseen Windowsissa riippuu erityisistä vaatimuksistasi ja siitä, kuinka yksityiskohtaisia tietoja tarvitset analyysiisi.