Úvod
Netsh, celým názvom Network Shell, je nástroj využívajúci príkazový riadok, na zobrazovanie a konfigurovanie rôznych stavov v sieti. Konfigurácia je možná lokálne alebo vzdialene. Netsh je dostupný na operačných systémoch od spoločnosti Microsoft od vydania Windows 2000. V jednoduchej definícii by Netsh predstavoval interface medzi používateľom a operačným systémom, ktorý umožňuje konfiguráciu sieťových nastavení. Veľkou výhodou Netsh je automatizovanie administrátorských úkonov pri nastavovaní siete tým, že je možné použiť skripty.
Kontext
Netsh veľmi úzko spolupracuje s knižnicami DLL (Dynamic – Link - Library), pričom každá z nich sprostredkováva iné rozšírenie, ktoré sa nazýva context. Pod kontextom možno rozumieť súbor príkazov, špecifických pre jednotlivé implementácie v sieti. Napríklad knižnica Dhcpmon.dll je knižnicou, ktorá Netsh umožňuje konfigurovať a spravovať DHCP servery.
Po spustení príkazového riadku a zadaní príkazu netsh, je možné zobraziť zoznam kontextov prostredníctvom znaku otáznika ?.
C:\Users\ASUS>netsh
netsh>?
The following commands are available:
Commands in this context:
.. - Goes up one context level.
? - Displays a list of commands.
abort - Discards changes made while in offline mode.
add - Adds a configuration entry to a list of entries.
advfirewall - Changes to the `netsh advfirewall' context.
alias - Adds an alias.
bridge - Changes to the `netsh bridge' context.
bye - Exits the program.
commit - Commits changes made while in offline mode.
delete - Deletes a configuration entry from a list of entries.
dhcpclient - Changes to the `netsh dhcpclient' context.
dnsclient - Changes to the `netsh dnsclient' context.
dump - Displays a configuration script.
exec - Runs a script file.
exit - Exits the program.
firewall - Changes to the `netsh firewall' context.
help - Displays a list of commands.
http - Changes to the `netsh http' context.
interface - Changes to the `netsh interface' context.
ipsec - Changes to the `netsh ipsec' context.
lan - Changes to the `netsh lan' context.
mbn - Changes to the `netsh mbn' context.
namespace - Changes to the `netsh namespace' context.
netio - Changes to the `netsh netio' context.
offline - Sets the current mode to offline.
online - Sets the current mode to online.
p2p - Changes to the `netsh p2p' context.
popd - Pops a context from the stack.
pushd - Pushes current context on stack.
quit - Exits the program.
ras - Changes to the `netsh ras' context.
rpc - Changes to the `netsh rpc' context.
set - Updates configuration settings.
show - Displays information.
trace - Changes to the `netsh trace' context.
unalias - Deletes an alias.
wcn - Changes to the `netsh wcn' context.
wfp - Changes to the `netsh wfp' context.
winhttp - Changes to the `netsh winhttp' context.
winsock - Changes to the `netsh winsock' context.
wlan - Changes to the `netsh wlan' context.
The following sub-contexts are available:
advfirewall bridge dhcpclient dnsclient firewall http interface ipsec lan mbn namespace netio p2p ras rpc trace wcn wfp winhttp winsock wlan
To view help for a command, type the command, followed by a space, and then type ?.
Zvyčajné problémy riešené pomocou Netsh
Jedným z najčastejších problémov, ktoré štandardný používateľ môže zažiť, je zamietnutie pripojenia na webstránku. Ide o error, ktorý je zobrazený nižšie na obrázku:
Existuje niekoľko spôsobov, ako takýto problém vyriešiť. Mnohé stránky či fóra radia napríklad preinštalovanie prehliadača Google Chrome. Ďalšou z možností je resetovanie Google nastavení na default. Možností je viac, no jednou z nich je aj použite Network Shellu, ktorý pomocou krátkeho príkazu dokáže resetovať takzvaný Winsock Catalog na defaultné natavenia. Winsock predstavuje API na operačnom systéme Windows, ktoré sa stará o input/output requesty medzi webovými aplikáciami v prehliadači a koncovým zariadením. Catalog je teda databáza, ktorá uchováva nastavenia. V operačnom systéme Windows sú v databáze uložené údaje o namespace provider¹, ktoré sprostredkovávajú mapu medzi Winsock a službami ako je napríklad DNS. Druhým objektom, ktorý je uchovaný v databáze sú informácie o internetových protokoloch, ako napríklad TCP/IP. Z dôvodu, že Winsock Catalog môže obsahovať nesprávne dáta, môže vzniknúť a aj najčastejšie vzniká vyššie spomínaná chyba pri načítavaní stránky. Príkazom netsh winsock reset sa dá celá databáza resetovať na defaultné nastavenia a tým vyriešiť problém a stránku rýchlo načítať.
Druhým najčastejším príkazom, ktorý je využívaný pri troubleshootingu je netsh int ip reset. Ide o príkaz, ktorý sa postará a o reštart TCP/IP stacku. Tento krok je vhodné vykonať, pokiaľ prehliadanie internetu je pomalé alebo po vykonaní aktualizácie operačného systému je problém so stabilným pripojením k internetu. Príkaz vymení TCP/IP a DHCP konfigurácie v registri a obnoví ich na defaultné nastavenia. To znamená napríklad odstránenie všetkých statických IP adries pre všetky sieťové rozhrania. Po tomto príkaze je ale potrebné vykonať celkový reštart zariadenia a opätovné nastavenie siete.
Scenáre a monitorovanie siete
Scenár je preddefinovaná množina možností, ktoré sú určené na monitorovanie a riešenie problémov v sieti. Po zadaní príkazu netsh trace show scenarios, sa zobrazia všetky dostupné scenáre.
netsh>trace show scenarios
Available scenarios (23):
-------------------------------------------------------------------
AddressAcquisition : Troubleshoot address acquisition related issues
AddressAcquisitionServer : Troubleshoot address acquisition server related issues
DirectAccess : Troubleshoot DirectAccess related issues
DirectAccessServer :
FileSharing : Troubleshoot common file and printer sharing problems
InternetClient : Troubleshoot web connectivity issues
InternetServer : Troubleshoot server-side web connectivity issues
L2SEC : Troubleshoot layer 2 authentication related issues
LAN : Troubleshoot wired LAN related issues
Layer2 : Troubleshoot layer 2 connectivity related issues
MBN : Troubleshoot mobile broadband related issues
NDIS : Troubleshoot network adapter related issues
NetConnection : Troubleshoot network connection related issues
NetworkSnapshot : Collect the current network state of the system
P2P-Grouping : Troubleshoot Peer-to-Peer Grouping related issues
P2P-PNRP : Troubleshoot Peer Name Resolution Protocol (PNRP) related issues
RemoteAssistance : Troubleshoot Windows Remote Assistance related issues
Virtualization :
VPNServer : Troubleshoot VPN related issues
WCN : Troubleshoot Windows Connect Now related issues
WFP-IPsec : Troubleshoot Windows Filtering Platform and IPsec related issues
WLAN : Troubleshoot wireless LAN related issues
XboxMultiplayer : Troubleshoot Xbox Live Multiplayer connectivity-related issues
Ako príklad, môžeme spustiť scenár určený pre problémy s bezdrôtovou sieťou, príkazom netsh trace start scenario = wlan. Monitoring a získavanie informácií sa spustí, no automaticky sa nevypne. Vypnúť sa dá príkazom netsh trace stop a to iba v prípade, že je command line spustený pod správcom. Po ukončení procesu, chvíľu trvá, kým sa dáta zozbierajú a vyhodnotia.
netsh>trace start scenario = wlan
Trace configuration:
-------------------------------------------------------------------
Status: Running
Trace File: C:\Users\ASUS\AppData\Local\Temp\NetTraces\NetTrace.etl
Append: Off
Circular: On
Max Size: 512 MB
Report: Off
netsh>trace stop
Merging traces ... done
Generating data collection ... done
The trace file and additional troubleshooting information have been compiled as "C:\Users\ASUS\AppData\Local\Temp\NetTraces\NetTrace.cab".
File location = C:\Users\ASUS\AppData\Local\Temp\NetTraces\NetTrace.etl
Tracing session was successfully stopped.
Ako je možné vidieť v bloku vyššie, proces vygeneruje .cab adresár, v ktorom sa nachádza množstvo súborov s informáciami, ktoré môžu výrazne pomôcť pri hľadaní problémov so sieťou. Ide napríklad o reporty o DNS, o nastaveniach siete, rýchlosti či stabilite pripojenia alebo šifrovacom algoritme, ktorý sa počas prenosu dát sieťou používa.
Alternatívou pre monitoring bezdrôtovej siete je aj príkaz netsh wlan show wlanreport, ktorého výhodou je prehľadný html súbor.
netsh>wlan show wlanreport
Generating report ...
Querying WLAN Events ...
Querying NCSI Events ...
Querying NDIS Events ...
Querying EAP Events ...
Querying WCM Events ...
Querying Kernel Events ...
Querying System Events ...
Running ipconfig ...
Running netsh wlan show all ...
Querying Wireless Profiles ...
Querying System and User Certificates ...
Querying User Info ...
Querying Network Devices ...
Report written to: C:\ProgramData\Microsoft\Windows\WlanReport\wlan-report-latest.html
done.
Report obsahuje nasledovné informácie:
- Wi-Fi graf - zhrnutie. Graf vyobrazuje všetky pripojenia na internet, ktoré boli zaznamenané. Kliknutím je možné každé pripojenie zobraziť zvlášť a prečítať si informácie ako dĺžku pripojenia, konkrétny čas, alebo dôvod straty spojenia. Červené guličky indikujú error, po kliknutí naň sa stránka posunie k informáciám, prečo k danej chybe došlo.
- Informácie o reporte. Kedy bol report vytvorený, a koľko dní zahrňuje.
- Všeobecné informácie o systéme. Ide o informácie ako napríklad meno zariadenia, verzia BIOSu, ID zariadenia.
- Informácie o prihlásenom používateľovi.
- Sieťové adaptéry. Report obsahuje detailné informácie o všetkých sieťových adaptéroch na danom PC.
- Script output. V tomto bloku sa nachádzajú zobrazené výpisy z príkazového riadku, po príkazoch:
- ipconfig /all
- netsh wlan show all
- certutil -store -silent My & certutil -store -silent -user My
- Profile Output
- Sumár.
- Zhrnutie úspešných, neúspešných pripojení a takisto pripojení s warningom.
- Dĺžka jednotlivých pripojení
- Dôvody odpojenia zo siete.
- Informácie o pripojení na Wi-Fi. Detailné informácie súvisiace s každým bezdrôtovým pripojením. Názvy rozhraní, profil, SSID, dôvod odpojenia … Tieto informácie sú prepojené s grafom a s jednotlivými označeniami v ňom.
Zneužitie voči bezpečnosti
Keďže Network Shell disponuje veľkým množstvom príkazov, sú v nich aj také, ktoré môžu značne pomôcť útočníkovi pri jeho úmysloch. Predpokladajme, že útočník získal prístup k nejakému zariadeniu, či už vďaka infikovanému USB, sociálnemu inžinierstvu alebo má k nemu fyzicky prístup.
Po spustení príkazového riadku “ako správca”, je možné nastavovať, meniť pravidlá alebo celkovo vypnúť firewall na počítači. Kompletné vypnutie firewallu by vyzeralo nasledovne:
C:\WINDOWS\system32>netsh firewall set opmode mode=disable
IMPORTANT: Command executed successfully.
However, "netsh firewall" is deprecated;
use "netsh advfirewall firewall" instead.
For more information on using "netsh advfirewall firewall" commands
instead of "netsh firewall", see KB article 947709
at https://go.microsoft.com/fwlink/?linkid=121488 .
Ok.
Otázkou však ostáva aké má útočník úmysly. V prípade, že jeho úmyslom je obeti len znepríjemniť život a nechce nič ukradnúť, môže pomocou Netsh spôsobiť, že sa zariadenie nepripojí na žiadnu webstránku.
Konkrétne pôjde o všetky stránky, ktoré sú sprostredkované HTTP a HTTPS protokolom. Toto je možno vykonať tým, že používateľovi zablokujeme porty 80 a 443.
C:\WINDOWS\system32>netsh advfirewall firewall add rule name="Block Ports" protocol=TCP dir=out remoteport=80,443 action=block
V prípade, že sa ale útočník pokúša naozaj niečo ukradnúť, dokáže pomocou Netsh, zobraziť heslo každej uloženej Wi-Fi v zariadení.
C:\WINDOWS\system32>netsh wlan show profile
C:\WINDOWS\system32>netsh wlan show profile WiFi-Name(SSID) key=clear
Vo výpise treba hľadať odsek Security settings, kde sa heslo danej siete nachádza.
Security settings
-----------------
Authentication : WPA2-Personal
Cipher : CCMP
Authentication : WPA2-Personal
Cipher : GCMP
Security key : Present
Key Content : ** tu bude zobrazené heslo **
Takto dokáže útočník ukradnúť heslá od sietí, do ktorých by za normálnych okolností prístup nemal. Heslo sa zobrazí v nešifrovanej podobe a teda je ihneď odhalené. Takto môže prísť prostredníctvom jedného zariadenia a Netsh príkazu k úniku niekoľkých hesiel k sieťam, ktoré môžu byť firemné či domáce.