Windows: Nützliche Konsolenbefehle

MAC-Adressen der Netzwerkkarten anzeigen


>getmac

Physikal. Adresse   Transportname
=================== ==================
B8-AB-61-A3-24-77   Nicht zutreffend
08-00-22-02-E4-99   Nicht zutreffend
  1. Mit dem Befehl getmac werden die MAC-Adressen der vorhandenen Netzwerkkarten angezeigt.

Eine weitere Möglichkeit die MAC-Adressen der installierten Netzwerkkarten anzuzeigen, ist mit Hilfe des Befehls “ipconfig /all”.

getmac Dokumentation
ipconfig Dokumentation

MAC-Adresse zu einer IP bestimmen


>ping -n 1 192.168.60.25 
Ping wird ausgeführt für 192.168.60.25 mit 32 Bytes Daten:
Antwort von 192.168.60.25: Bytes=32 Zeit<1ms TTL=128

Ping-Statistik für 192.168.60.25:
    Pakete: Gesendet = 1, Empfangen = 1, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms

>arp -a 192.168.60.25

Schnittstelle: 192.168.60.22 --- 0xf
  Internetadresse       Physische Adresse     Typ
  192.168.60.25          00-04-76-ef-ac-c3     dynamisch
  • 1. Zuerst wird ein ICMP Paket an die IP-Adresse verschickt um die MAC-Adresse herauszufinden.
  • 11. Nun kann mit dem ARP-Befehl die MAC- IP-Zuordnung aus dem ARP-Cache gelesen werden.

ping Dokumentation
arp Dokumentation

Alle Netzwerkverbindungen anzeigen


>netstat -ano

  Proto  Lokale Adresse         Remoteadresse          Status           PID
  TCP    0.0.0.0:135            0.0.0.0:0              ABHÖREN         864
  TCP    0.0.0.0:445            0.0.0.0:0              ABHÖREN         4
  TCP    0.0.0.0:3389           0.0.0.0:0              ABHÖREN         932
  TCP    127.0.0.1:31416        127.0.0.1:49178        HERGESTELLT     4264
  1. Das Kommando “netstat -ano” listet sämtliche Verbindungen eines Computers auf. Der Parameter “o” ist erst ab Windows 2000 vorhanden. Dieser bewirkt, dass zu sämtlichen Verbindungen auch die PID-ID der einzelnen Prozesse angezeigt werden. Der Status “Abhören” (Listen) beschreibt Serverdienste die auf Verbindungen warten.

Mit der Hilfe der PID-ID kann im Task-Manager herausgefunden werden, welcher Prozess eine Verbindung geöffnet hat oder auf Verbindungen wartet.

Windows Task-Manager
Die Verbindung mit der PID-ID 4264, aus dem obigen Beispiel, gehört zum Prozess “boinc.exe”.

netstat Dokumentation

Anzeigen wer eine Verbindung auf die lokale Maschine hat


>net session

Computer            Benutzername     Clienttyp     Öffn. Ruhezeit
------------------------------------------------------------------
\\192.168.60.25     DEMO-MASCHINE$                  0 00:00:02
\\192.168.60.25     demouser                        2 00:00:02

Der Befehl wurde erfolgreich ausgeführt.

net session Dokumentation

Windows herunterfahren

Dieser Befehl ist nur in Windows 2000 mit installiertem “Resource Kit” oder in neueren Windows Versionen vorhanden.


>shutdown /s /t 180
  1. Windows wird in 3 Minuten heruntergefahren. Verwendet man den Parameter “/r” anstelle “/s” wird der Computer neu gestartet.

Mit dem Parameter “shutdown /a” kann das Herunterfahren abgebrochen werden.


>shutdown /i
  1. Startet die grafische Oberfläche um einen Remotecomputer neu zu starten oder herunterzufahren.
Grafisches Oberfläche des shutdown Befehls
Mit der grafisches Oberfläche kann ein Remotecomputer heruntergefahren oder neu gestartet werden.

Dazu noch einen Hinweis aus der Dokumentation:

Damit ein Remotecomputer heruntergefahren oder neu gestartet werden kann, müssen die Firewallausnahmen Remoteverwaltung und Windows-Verwaltungsinstrumentation auf dem Remotecomputer aktiviert sein.

shutdown Dokumentation

DNS client resolver cache löschen und anzeigen


>ipconfig /flushdns
  1. Löscht den DNS client resolver cache.

>ipconfig /displaydns > dns_resolved.txt
  1. Speichert den DNS client resolver cache in die Datei dns_resolved.txt.

ipconfig Dokumentation

Taskliste anzeigen


>tasklist 
  1. Zeigt eine Liste von allen Applikationen und Services sowie deren Prozess ID (PID) an.

tasklist Dokumentation

Einen Prozess beenden

In Windows 2000 (und früher) ist dieser Befehl nicht vorhanden. Für diese Systeme gibt es dieses Kommando als zusätzliches Tool “pskill”.


>taskkill /f /pid 12345
  1. Erzwingt das Beenden des Prozesses mit dem PID 12345.

taskkill Dokumentation

Dateien vergleichen

Um in der Konsole zwei Dateien zu vergleichen, gibt es das Kommando “fc”.


>fc datei.txt datei.txt
  1. Hier werden die Dateien “datei.txt” und “datei2.txt” miteinander verglichen

Als Output erhält man die Zeilen die sich unterscheiden:


Vergleichen der Dateien datei.txt und DATEI2.TXT
***** datei.txt
***** DATEI2.TXT
In der zweiten Datei..
*****

Die Datei “datei2.txt” enthält zusätzlich die Zeile “In der zweiten Datei..”

fc Dokumentation

Nützliche Links

Windows Command-Line Reference A-Z
DNS-Abfragen mit nslookup
nslookup: anzeigen einer Liste mit allen IP’s und Aliasse einer Domain
ARP-Übersetzungstabelle anzeigen und verändern

Mit VBScript OS Version bestimmen

Dieses Skript kann verwendet werden um die Server OS Version zu bestimmen. Das Skript liefert das Resultat für Windows 2000, Windows 2003, Windows 2008. Es kann jedoch auf einfache Weise erweitert werden, damit auch Client Versionen zurückgeliefert werden.


'/*
'	check windows version
'	return: 
'			win2k for windows 2000
'			win2k3 for windows 2003
'			win2k8 for windows 2008
'			unknown if the os is older / newer
'*/
function getOSVersion()
	strWinVersion = ""
	set objWMIService = GetObject("winmgmts:" _
		& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
	Set colOperatingSystems = objWMIService.ExecQuery _
		("Select * from Win32_OperatingSystem")
	For Each objOperatingSystem in colOperatingSystems
			strWinVersion = objOperatingSystem.Version
	Next

	'/**/	
	strMajor = left(strWinVersion,3)
	strOS = ""
	SELECT CASE strMajor
	case "5.0"
		'WScript.Echo "Windows 2000"
		strOS = "win2k"
	case "5.2"
		'WScript.Echo "Windows 2003"
		strOS = "win2k3"
	case "6.0"
		'WScript.Echo "Windows 2008"	
		strOS = "win2k8"
	case else
		'WScript.Echo "Windows x?" & "(" & strWinVersion & ")"
		strOS = "unknown"
	end select
	getOSVersion = strOS
End Function

VBScript: Windows Service remote starten und stoppen

Dank der WMI-Schnittstelle ist es möglich ein Skript zu schreiben, das auf einem remote System einen Service überwacht und bei Bedarf auch neu starten oder stoppen kann.


Dim objWMIService
Dim lServices
Dim strService: strService = "MeinService"
Dim strComputer: strComputer ="."

Set objWMIService = objSWbemLocator.ConnectServer("10.0.200.33", "root\cimv2", _
"Benutzer", _
"Passwort", _
"","")


Set lServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='" & strService & "'")
For Each objService In lServices
    Select Case objService.State
     case "Stopped" 'start service
          errReturn = objService.StartService()
     case "Paused" 'resume service
          errReturn = objService.ResumeService()
     case "Running" 'nothing todo
          wscript.echo objService.Name & " with ID " & objService.ProcessId & " is already started."
     End Select
Next

Anmerkung zu den Codezeilen:

  • 03 Achtung: bei der Definition des Servicenamen handelt es sich nicht um den Anzeigenamen sondern um den Dienstnamen
  • 06 Remote WMI Service initiieren (auch lokaler möglich)
  • 12 Mit einer WQL Abfrage wird der gesuchte Dienst selektiert um dann mit diesem Arbeiten zu können
  • 14 Status des Dienstes abfragen (Mögliche Werte sind: “Stopped”, “Start Pending”, “Stop Pending”, “Running”, “Continue Pending”, “Pause Pending”, “Paused”, “Unknown”)
Eigenschaften des Dienstes Anwendungsverwaltung
Bei der WQL-Abfrage den Dienstnamen verwenden und nicht den Anzeigenamen

Nützliche Links:

Managing Windows with WMI
WMI Query Language (WQL)
Win32_Service Class Proberties

WMI Scripting Primer: Part 1
WMI Scripting Primer: Part 2
WMI Scripting Primer: Part 3

Windows: Alternative Datenströme (ADS)

Mit Hilfe von sogenannten alternativen Datenströme (ADS), können im Dateisystem NTFS, zusätzliche Informationen / Daten zu den Hauptdaten gespeichert werden. Da Windows die alternativen Datenströme nicht standardmässig anzeigt, werden diese auch verwendet um Malware oder Daten zu verstecken.

Erstellen eines ADS

Ein ADS wird mit einem Doppelpunkt an eine Datei angehängt: “Dateiname:AD-Streamname”

Anhängen eines Textes:


echo "Ich bin nicht sofort Sichtbar" > normaler.txt:unsichtbar.txt

Schauen wir mit dem Windows-Explorer das Verzeichnis an, in dem die Datei liegt, können wir nur die Datei “normaler.txt” sehen. Diese Datei scheint jedoch keine Daten zu enthalten, da sie 0 KB gross ist.

normaler.txt
normaler.txt

Anhängen einer Datei:

Es können beliebige Binär- Asciidateien gespeichert werden. In diesem Beispiel wird die “netcat.exe” angehängt.


type nc.exe > normaler.txt:security.exe

Ausführen einer Datei im ADS

In den meisten Beispielen, im Internet, wird die angehängte Exe-Datei direkt mit dem Befehl start ausgeführt:


start c:\tmp\ads\normaler.txt:security.exe

Leider funktioniert dies bei mir unter Windows 7 nicht. Wird aber ein Systemlink auf diesen ADS gemacht, kann Netcat ausgeführt werden. Daher erstelle ich zuerst ein Systemlink auf diesen ADS:


mklink happy.exe c:\tmp\ads\normaler.txt:security.exe

Jetzt kann mit dem Befehl start Netcat ausgeführt werden:


start c:\tmp\ads\happy.exe

Anzeigen von AD-Streams

Windows 7 / Windows Vista:

Ab Windows Vista wurde der Befehl dir mit dem Parameter “/R” erweitert. Dieser listet alle dazugehörigen AD-Streams einer Datei auf.

dir /R
AD-Stream
Auflisten von AD-Streams

Windows XP / Windows 2000:

Bei den früheren Windows Versionen musste ein zusätzliches Tool verwendet werden um die AD-Streams anzuzeigen. Dabei kann das Command-Line Tool Streams 1.56 verwendet werden.

Auflisten von AD-Streams mit dem Command-Line Tool Streams
Auflisten von AD-Streams mit dem Command-Line Tool Streams

Als alternative kann auch die GUI-Basierte Anwendung AlternateStreamView v1.35 verwendet werden.

AlternateStreamView v1.35
AlternateStreamView v1.35

Nützliche Links

ADS Wikipedia
Dissecting NTFS Hidden Streams
Alternate Data Streams als Versteck für Schädlinge

Command-Line
mklink Dokumentation
type Dokumentation
start Dokumentation
echo Dokumentation
dir Dokumentation

Tools
AlternateStreamView v1.35
Streams 1.56

Routingtabelle: statische Routen definieren unter: Windows, Debian Linux und Esxi-Server

Wenn eine Routingtabelle mit statischen Routeneinträge ergänzt werden soll, was bei einer VPN-Verbindung nötig sein kann, gibt es für die verschiedenen Betriebssysteme einen Befehl “route”. Dieser Befehl ist unter Windows und Linux sehr ähnlich. Der grösste Unterschied ist bei den permanenten Routings.

Einträge in der Rountingtabelle anzeigen:

  • unter Windows
    >route print

    Routingtabelle unter Windows
    Routingtabelle unter Windows
  • unter Linux
    >route

    Routingtabelle unter Linux
    Routingtabelle unter Linux
  • unter Esxi-Server
    >esxcfg-route -l

    Routingtabelle Esxi
    Routingtabelle Esxi

Eintrag in der Routingtabelle erstellen:
Achtung: Wenn das Betriebssystem neugestartet wird gehen die Einträge verloren, da es sich nicht um permanente Einträge handelt.

  • unter Windows
    >route add 192.168.7.0 MASK 255.255.255.0 10.50.147.66
  • unter Linux
    >route add -net 192.168.7.0 netmask 255.255.255.0  gw 10.50.147.66 dev eth0
  • unter Esxi-Server
    >esxcfg-route -a 192.168.7.0 255.255.255.0 10.50.147.66

Eintrag in der Routingtabelle löschen:

  • unter Windows
    >route delete 192.168.7.0 MASK 255.255.255.0 10.50.147.66
  • unter Linux
    >route del -net 192.168.7.0/24  gw 10.50.147.66
  • unter Esxi-Server
    >esxcfg-route -d 192.168.7.0/24 10.50.147.66

Permanenter Eintrag in der Routingtabelle erstellen:
Nach einem Neustart des Betriebssystemes sind diese Einträge wieder in der Routingtabelle vorhanden.

  • unter Windows muss nur der Parameter -p mitgegeben werden, damit dieser Eintrag permanent wird.
    >route add 192.168.7.0 MASK 255.255.255.0 10.50.147.66 -p
  • unter Linux ist es ein wenig aufwändiger, es muss ein Eintrag in der Datei “/etc/network/interfaces” erstellt werden.
    
    iface eth0 inet static
          address 10.50.147.99
          netmask 255.255.255.0
          network 10.50.147.0
          broadcast 10.50.147.255
          gateway 10.50.147.1
          dns-nameservers 10.50.147.1 10.50.147.2
    
    #hinzufügen der statischen permanenten Route
    up route add -net 192.168.7.0 netmask 255.255.255.0  gw 10.50.147.66 dev eth0
    
  • unter Esxi-Server wird ein Eintrag in der Datei “/etc/sysconfig/static-routes” erstellt.
    
    #hinzufügen der statischen permanenten Route
    any net 192.168.7.0 netmask 255.255.255.0  gw 10.50.147.66
    

Zum starten der Esxi-Konsole (unsupported modus: left alt key + F1, type: unsupported)

Vmware Knowledge Base: Adding a static route to an ESX host
Esxcfg-Hilfe
Linux: man route

Disk Image mit dd unter Windows erstellen

Der ursprüngliche Unix-Befehl dd dient zum Kopieren von Datenströmen auf niedrigster Stufe. Mit der Hilfe von dd können Datenträger Images von CDs, Harddisks, USB-Sticks usw. erstellt werden. In den meisten Linux-Distributionen ist dd bereits vorhanden. Für Windows (32bit) gibt es auch ein Binary, das unter chrysocome.net heruntergeladen werden kann. Anders als die Unix-Version, bei der auch Datenströme konvertiert werden können, unterstützt die Windows-Version nur das Kopieren von Datenströmen.

Um eine Auflistung der vorhandenen Datenträger zu erhalten, wird folgender Befehl verwendet:


dd --list

Als Output erhalten wir eine Auflistung der vorhanden Datenträger:
dd --list

Um nun ein Image des Laufwerks f:\ zu erstellen:


dd if=\\.\Volume{bae40a24-91cd-11e0-804b-080027ffca15} of=c:\tmp\forensic.img --progress

Mit diesem Befehl wird nun dd das gesamte Laufwerk f:\ als Imagedatei im Verzeichnis c:\tmp speichern.

  • if= definiert das Inputfile / den Datenträger der kopiert werden soll
  • of= definiert das Outputtfile / den Datenträger der beschrieben werden soll
  • bs= definiert die Blockgrösse, welche standardmässig auf 512 gesetzt ist
  • – -progress zeigt die Anzahl der bereits kopierten Blocks an (nur unter Windows vorhanden)

Um unter Windows auf die erstellte Imagedatei zuzugreifen, braucht es ein Tool das dieses Image wieder als Laufwerk einbinden kann.

Dazu eignen sich die Tools:
FileDisk
p2-explorer

DNS-Abfragen mit nslookup

Braucht man Informationen zu einer Domain kann unter Windows und Linux nslookup verwendet werden. Das Tool nslookup bietet die Möglichkeit einen interaktiven Modus oder den nicht interaktiven Modus zu verwenden. Diese Modi unterscheiden sich beim Eingeben der Werte. Im interaktiven Modus wird in einer eigenen Konsole gearbeitet und jeder Befehl einzeln angegeben. Beim nicht interaktiven Modus hingegen, wird alles in einem Befehl definiert.

Was hat www.monsterli.ch für eine IP-Adresse?

Im interaktiven Modus:


>nslookup
>www.monsterli.ch
Server:                192.168.0.1
Address:               192.168.0.1#53

Name:      www.monsterli.ch
Address:   80.238.129.157

Durch die Eingabe von nslookup, in der Konsole, wird in den interaktiven Modus gewechselt. Nach dem wechseln des Modus, kann durch die Eingabe des Hostnamens die Abfrage gestartet werden.

Im nicht interaktiven Modus:


>nslookup www.monsterli.ch
Server:                192.168.0.1
Address:               192.168.0.1#53

Name:      www.monsterli.ch
Address:   80.238.129.157

Was ist der Mailserver der Domain monsterli.ch ?

Im interaktiven Modus:


>nslookup
>set type=mx
>monsterli.ch
Server:                192.168.0.1
Address:               192.168.0.1#53

Nicht autorisierende Antwort:
monsterli.ch    MX preference = 0, mail exchanger = mail.monsterli.ch
monsterli.ch    MX preference = 5, mail exchanger = monsterli.ch
monsterli.ch    MX preference = 10, mail exchanger = mail2.monsterli.ch

Im nicht interaktiven Modus:


>nslookup -type=mx monsterli.ch
Server:                192.168.0.1
Address:               192.168.0.1#53

Nicht autorisierende Antwort:
monsterli.ch    MX preference = 0, mail exchanger = mail.monsterli.ch
monsterli.ch    MX preference = 5, mail exchanger = monsterli.ch
monsterli.ch    MX preference = 10, mail exchanger = mail2.monsterli.ch

Einen alternativen DNS-Server für die Abfragen verwenden

Soll bei der DNS-Abfrage nicht der standart DNS-Server verwendet werden, kann dieser angegeben werden. Hier im Beispiel wird ein öffentlicher DNS-Server von Google verwendet.

Im interaktiven Modus:


>nslookup
>server 8.8.4.4
Standardserver: google-public-dns-b.google.com
Address:  8.8.4.4

>www.monsterli.ch
Server:                8.8.4.4
Address:               8.8.4.4#53

Name:      www.monsterli.ch
Address:   80.238.129.157

Im nicht interaktiven Modus:


>nslookup www.monsterli.ch 8.8.4.4
Server:                8.8.4.4
Address:               8.8.4.4#53

Name:      www.monsterli.ch
Address:   80.238.129.157

ARP-Übersetzungstabelle anzeigen und verändern

Mit Hilfe des Tools “arp” kann unter Windows und Linux die Übersetzungstabelle für IP-Adressen zur MAC-Adresse (physikalische Adresse) angezeigt und verändert werden. Diese Übersetzungstabelle wird von ARP (Address Resolution Protocol) verwendet. Das Tool wird im Normalfall nur für Test- und Debugzwecke verwendet.


>arp -a

Zeigt die aktuellen ARP-Einträge in der Übersetzungstabelle an.

ARP-Einträge

Um einen Eintrag aus der Tabelle zu löschen:


>arp -d 192.168.0.22

Um einen eigenen statischen Eintrag hinzuzufügen:


>arp -s 192.168.0.22 00-aa-00-62-c6-09

nslookup: anzeigen einer Liste mit allen IP’s und Aliasse einer Domain

Um eine Liste mit allen IP’s und Aliasse einer Domain zu erhalten, kann mit Hilfe des Tools nslookup ein Zonen-Transfer simuliert werden. Dies setzt voraus, dass der zuständige DNS-Server die Option “Zone-Transfere” eingeschaltet hat.

Aus dem Gesichtspunkt der Sicherheit, sollte diese Option bei einem DNS-Server nicht aktiviert sein. Mehr zu diesem Thema “Why is securing DNS zone transfer necessary?”

Um die Liste zu erstellen, braucht es folgende Schritte:

  1. nslookup im interaktiven Modus starten
  2. den Typ der Abfrage auf Nameserver setzen (ns)
  3. ermitteln des Domain-Servers
  4. Simulieren eines Zonen-Transfers

In den interaktiven Modus wechseln und den zuständige DNS-Server bestimmen:


>nslookup
>set type=ns
>2022.ch
>
Nicht autorisierende Antwort:
2022.ch nameserver = ns15.zoneedit.com
2022.ch nameserver = ns13.zoneedit.com

ns13.zoneedit.com       internet address = 66.223.97.114
ns15.zoneedit.com       internet address = 216.227.210.9

Auf den obigen Zeilen 6 und 7 sind die zuständigen DNS-Server abgebildet. Nun wird einer dieser DNS-Server unter nslookup definiert, als Server für die Anfragen, danach wird die Simulation des Zonen-Transfers gestartet:


>server ns15.zoneedit.com
>ls -d 2022.ch
>
[ns15.zoneedit.com]
 2022.ch.                       SOA    ns13.zoneedit.com soacontact.zoneedit.com
. (2011330253 300 300 300 300)
 2022.ch.                       NS     ns15.zoneedit.com
 2022.ch.                       NS     ns13.zoneedit.com
 2022.ch.                       A      80.238.129.157
 demo                           A      194.88.197.97
 www                            A      80.238.129.157
 2022.ch.                       SOA    ns13.zoneedit.com soacontact.zoneedit.com
. (2011330253 300 300 300 300)

Will man das Resultat direkt in eine Textdatei speichern, kann der Befehl auch folgendermassen eingegeben werden:


>ls -d 2022.ch > DateiZumSpeichern.txt

Der Output kann jetzt in der Datei “DateiZumSpeichern.txt” angeschaut werden.

Remotedesktopverbindung: Nützliche Tastenkombinationen

Eine kleine Auflistung von nützlichen Tastenkombinationen, für die Arbeit mit Remotedesktopverbindungen:

  • CTRL + ALT + END: Entspricht auf einem lokalen Windows Desktop der Tastenkombination “CTRL + ALT + DEL”.
  • CTRL + ALT + BREAK: Wechselt die Anzeige der Remotedesktopverbindung zwischen Vollbildmodus und Fenstermodus.
  • CTRL + ALT + MINUS SIGN (-): Erstellt ein Screenshot des aktiven Fensters im RD Host. Funktioniert nicht im Vollbildmodus – Im Vollbildmodus ist “ALT + Print Screen” zu verwenden.
  • CTRL + ALT + PLUS SIGN (+): Erstellt ein Screenshot des gesamten Desktop im RD Host. Funktioniert nicht im Vollbildmodus – Im Vollbildmodus ist “Print Screen” zu verwenden.

Nützliche Links:

MSDN: Remote Desktop Services Shortcut Keys