Windows Passwort des lokalen Administrators ändern ohne Rechte

Das nachfolgende Szenario ist schon länger bekannt, jedoch möchte ich damit wieder einmal darauf hinweisen, wie wichtig es ist eine Festplatten Verschlüsselung einzusetzen.
Wenn eine Windows Installation unverschlüsselt ist, kann relativ einfach eine Shell mit den höchsten Rechten (NT AUTHORITY\System) gestartet werden. Damit lässt sich absolut alles mit einem System machen, wie z.B das Passwort des lokalen Adminstrators ändern um sich damit anzumelden.
Um diese Shell zu starten bedienen wir uns dem Windows Feature Eingabehilfen auf dem Login Bildschirm, welches immer als NT AUTHORITY\System Benutzer gestartet wird.
Es gibt verschiedene Varianten an diese Shell zu gelangen:

Variante 1: Programm kopieren (einfachere)

  1. Zielsystem mit WinPE oder Linux (mit NTFS Lese/Schreibberechtigungen) starten
  2. C:\Windows\System32\Utilman.exe nach Utilman.exe.bak umbenennen
  3. C:\Windows\System32\cmd.exe kopieren nach C:\Windows\System32\Utilman.exe
  4. Neustarten und die Eingabehilfen starten
  5. net user administrator <neuesPasswort>

winpe_utilman
windows_login_utilman

Variante 2: Image File Exection Options (komplexere)

  1. Zielsystem mit WinPE oder Linux (mit NTFS Lese/Schreibberechtigungen) starten
  2. Registry Hive C:\Windows\System32\config\SOFTWARE laden
  3. Zum Schlüssel (vom Zielsystem) wechseln KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
  4. Neuen Schlüssel erstellen mit Namen utilman.exe
  5. In diesem Schlüssel einen String Value erstellen Name = debugger Value = cmd.exe
  6. Neustarten und die Eingabehilfen starten
  7. net user administrator <neuesPasswort>

Kali Linux USB Stick auf dem Mac

Zu Testzwecken möchte ich einen USB Stick erstellen, von dem ich Kali Linux booten kann, wenn möglich ohne grosse Änderungen an OS X vornehmen zu müssen.
Anforderungen
– USB Stick (minimum 8GB)
– Macbook, iMac etc.
– Virtualisierungs Software (VirtualBox, VMware Fusion etc.)
Kali Linux 64bit ISO
refit
Guide
Als erstes erstellen wir auf dem USB Stick 3 Partitionen mittels Apple’s “Disk Utility”.

1. Partition: 100 MB HFS+
2. Partition: 100 MB FAT32
3. Partition: Rest FAT32

diskutility_partitioning
Danach laden wir rEFIt herunter und kopieren den Ordner “efi” auf die 1. Partition des USB Sticks.
Als nächstes öffnen wir eine Konsole und führen folgenden Befehl aus (USBSTICKPART1 durch 1. Partition des USB Sticks ersetzten!)

cd /Volumes/USBSTICKPART1/efi/refit; sudo sh enable.sh

Nun starten wir die Virtualisierungs Software erstellen eine neue VM und hängen das Kali ISO an.
Der USB Stick muss in der VM ersichtlich sein.
Da diese Schritte je nach Virtualisierungs Software unterschiedlich sind gehe ich nicht im Detail darauf ein.
Nun folgt die Installation von Kali auf den USB Stick. Ich werde nur die relevanten Schritte aufzeigen:

Das wars! Um Kali Linux nun zu starten während dem einschalten des Mac die Option Taste gedrückt halten, rEFIt auswählen und dann Linux auswählen.
refit_bootscreen
Diese Prozedur kann mit allen Linux Derivaten durchgeführt werden.

VB.net AES Encryption Modul

Benötigt: .Net Framework 3.5 (AES Cryptosystem)

Test Programm

Imports Encrpyt.CryptoAES.Crypto
Module Module1
    Sub Main()
        Dim enc = New Crypto
        enc.key = "x4!UnUfugeyaprachuT8DesAst55ew!2"
        Dim cstring As String = enc.EncryptString("I like encryption!")
        Console.WriteLine("Encrypted: " & cstring)
        Console.WriteLine("Decrypted: " & enc.DecryptString(cstring))
        Dim k = Console.ReadKey()
    End Sub
End Module

Encryption Modul

Imports System.Security.Cryptography
Imports System.IO
Imports System.Text
Module CryptoAES
    Public Class Crypto
        Private _key As String
        Public Property key() As String
            Get
                Return _key
            End Get
            Set(ByVal value As String)
                _key = value
            End Set
        End Property
        Public Sub EncryptFile(ByVal sInputFilename As String, _
                       ByVal sOutputFilename As String, _
                       ByVal sKey As String)
            Dim fsInput As New FileStream(sInputFilename, _
                                        FileMode.Open, FileAccess.Read)
            Dim fsEncrypted As New FileStream(sOutputFilename, _
                                        FileMode.Create, FileAccess.Write)
            Dim AES As New AesCryptoServiceProvider()
            'Set secret key for AES algorithm.
            'A 256-bit key and an IV are required for this provider.
            AES.KeySize = 256
            AES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
            'Set the initialization vector.
            AES.IV = ASCIIEncoding.ASCII.GetBytes(Left(sKey, 16))
            'Create the AES encryptor from this instance.
            Dim aesencrypt As ICryptoTransform = AES.CreateEncryptor()
            'Create the crypto stream that transforms the file stream by using AES encryption.
            Dim cryptostream As New CryptoStream(fsEncrypted, _
                                                aesencrypt, _
                                                CryptoStreamMode.Write)
            'Read the file text to the byte array.
            Dim bytearrayinput(CInt(fsInput.Length - 1)) As Byte
            fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)
            'Write out the AES encrypted file.
            cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)
            cryptostream.Close()
            fsInput.Close()
        End Sub
        Public Sub DecryptFile(ByVal sInputFilename As String, _
            ByVal sOutputFilename As String, _
            ByVal sKey As String)
            Dim AES As New AesCryptoServiceProvider()
            'A 64-bit key and an IV are required for this provider.
            'Set the secret key for the AES algorithm.
            AES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey)
            'Set the initialization vector.
            AES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
            'Create the file stream to read the encrypted file back.
            Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
            'Create the AES decryptor from the AES instance.
            Dim aesdecrypt As ICryptoTransform = AES.CreateDecryptor()
            'Create the crypto stream set to read and to do a AES decryption transform on incoming bytes.
            Dim cryptostreamDecr As New CryptoStream(fsread, aesdecrypt, CryptoStreamMode.Read)
            'Print out the contents of the decrypted file.
            Dim fsDecrypted As New StreamWriter(sOutputFilename)
            fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd)
            fsDecrypted.Flush()
            fsDecrypted.Close()
            fsread.Close()
        End Sub
        Public Function EncryptString(ByVal sString As String) As String
            'Initialize AES Crypto Provider
            Dim AES As New AesCryptoServiceProvider()
            'Set KeySize to 256 Bit
            AES.KeySize = 256
            'Set the initialization vector and the encryption key
            AES.IV = ASCIIEncoding.ASCII.GetBytes(Left(_key, 16))
            AES.Key = ASCIIEncoding.ASCII.GetBytes(_key)
            'Create the AES Encryptor
            Dim aesencrypt As ICryptoTransform = AES.CreateEncryptor
            'Convert plain text to bytes
            Dim plaintext() As Byte = System.Text.Encoding.Unicode.GetBytes(sString)
            'Create the Stream
            Dim ms As New System.IO.MemoryStream
            'Create the encoder
            Dim encStream As New CryptoStream(ms, aesencrypt, CryptoStreamMode.Write)
            encStream.Write(plaintext, 0, plaintext.Length)
            encStream.FlushFinalBlock()
            Return Convert.ToBase64String(ms.ToArray)
        End Function
        Public Function DecryptString(ByVal sString As String) As String
            'Initialize AES Crypto Provider
            Dim AES As New AesCryptoServiceProvider()
            'Set KeySize to 256 Bit
            AES.KeySize = 256
            'Set the initialization vector and the encryption key
            AES.IV = ASCIIEncoding.ASCII.GetBytes(Left(_key, 16))
            AES.Key = ASCIIEncoding.ASCII.GetBytes(_key)
            'Create the AES Decryptor
            Dim aesdecrypt As ICryptoTransform = AES.CreateDecryptor
            'Convert plain text to bytes
            Dim encryptedstring() As Byte = Convert.FromBase64String(sString)
            'Create the Stream
            Dim ms As New System.IO.MemoryStream
            'Create the decoder
            Dim decStream As New CryptoStream(ms, aesdecrypt, CryptoStreamMode.Write)
            decStream.Write(encryptedstring, 0, encryptedstring.Length)
            decStream.FlushFinalBlock()
            Return System.Text.Encoding.Unicode.GetString(ms.ToArray)
        End Function
    End Class
End Module