Tento článek slouží k záchraně dat a ne k dobývání se do cizích počítačů. Popíšeme jak obnovit heslo Administrátora ve Windows a roota na Linuxu. Poptřebujeme fyzický přístup k počítači, bez toho to udělat nejde. Dále potřebujeme mít nezaheslovaný BIOS. Pokud je BIOS zaheslovaný, můžeme disk přemístit na jiný počítač. Pricip spočítá v tom, že nabootujeme z USB klíčenky distribuci Finnix[1] , připojíme disk a změníme heslo. Heslo nebudeme hádat, ale prostě ho změníme. To platí pro Linux, na Windows ho nastavíme prázdné.

Nejprve musíme přinutit BIOS, aby nabootoval z USB. Vložíme USB klíčenku s Finnixem do volného USB portu. Do BIOSu se dostaneme obvykle tak, že po startu počítače stiskneme klávesu DEL, nebo F2. Záleží to na výrobci desky, obvykle se hláška Press DEL to enter BIOS nebo něco podobného objevuje hned na první opbrazovce po zapnutí počítadla (ale nemusí).

Na počítačích DELL funguje klávesa F12 která vytvoří One time boot menu

Přesvícená položka na obrázku je UEFI:Sandisk ze kterého chci bootovat

one time boot menu dell

Finnix bootuje

finnix bootuje

root na Linuxu

Nabootuje Finix a příkazem fdisk -l si zjistíme jaké máme disky. Odhadneme, kde je kořenový filesystém a ten si připojíme, třeba do /mnt/disk.

# fdisk -l
# mkdir /mnt/disk
# mount /dev/sda1 /mnt/disk

Pokud to dopadlo, podíváme se, zda jsme připojili kořenový filesystém hackovaného stroje. Měli bychom vidět adresář /etc, /dev, /proc a pod.

Připojíme si pseudofilesystémy dev a proc.

# mount --rbind /dev /mnt/disk/dev
# mount -t proc proc /mnt/disk/proc

Nyní uděláme změnu kořene tzv chroot do připojeného filesystému v /mnt/disk. Stane se v podstatě to, že jakoby běží zachraňovaný systém a my jsme root.

# chroot /mnt/disk /bin/bash

Potom už zbývá jenom změnit heslo roota.

# passwd        (1)
1 Na některých Linuxech je vynucováno pořádné heslo, heslo veverka bude odmítnuto jako slabé, ale třeba Veverka5153. už bude akceptovatelné.

Máme hotovo a zbývá jenom uklidit a počítač restartovat.

Úklid
# (1)
# umount /mnt/disk/proc
# umount /mnt/disk/dev
# umount /mnt/disk
# reboot (2)
1 Z chrootovaného prostředí vyskočíme stisknutím Ctrl+D
2 USB klíčenku vytáhneme až Finnix skončí

A je to!

Administrátor (nebo jeho ekvivalent) na Windows

Změnit heslo na Windows lze tímto způsobem pouze lokálnímu uživateli. Heslo doménového Administrátora takto nezměníme.

Nabootujeme z USB klíčenky stejně jako u Linuxu a podíváme se příkazem fdisk -l jaké máme disky

root@0:~# fdisk -l
Disk /dev/sda: 238.47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: SAMSUNG SSD PM87
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A78AAD6D-622E-49E9-830C-8EC65D249521

Device       Start       End   Sectors   Size Type
/dev/sda1     2048    923647    921600   450M Windows recovery environment
/dev/sda2   923648   1126399    202752    99M EFI System
/dev/sda3  1126400   1159167     32768    16M Microsoft reserved
/dev/sda4  1159168 242069503 240910336 114.9G Microsoft basic data              (1)


Disk /dev/sdb: 14.61 GiB, 15682240512 bytes, 30629376 sectors
Disk model: Cruzer Blade
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb2a38918

Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1  *       64 1001471 1001408  489M  0 Empty
/dev/sdb2         740   10915   10176    5M ef EFI (FAT-12/16/32)


Disk /dev/loop0: 407.92 MiB, 427737088 bytes, 835424 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/zram0: 7.76 GiB, 8330711040 bytes, 2033865 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
root@0:~#
1 Kořenový filesystém Windows je zařízení /dev/sda4

Vytvoříme opět adresář /mnt/disk a připojíme do něj kořenový filesystém Windows, tentokrát ale použijeme program ntfs-3g, pomocí něhož můžeme jak číst tak i zapisovat filesystém NTFS.

První kámen pod vodou, který nebyl vidět.
root@0:~# mkdir /mnt/disk
root@0:~# ntfs-3g /dev/sda4 /mnt/disk
Windows is hibernated, refused to mount.  (1)
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an
unsafe state. Please resume and shutdown Windows fully (no hibernation
or fast restarting.)
Could not mount read-write, trying read-only
root@0:~#
1 ntfs-3g říká, že Windows byly hibernované, takže nechce zapisovat do NTFS, ale připojil filesystém jenom ke čtení (read only).

Zkusíme opravit NTFS filesystém pomocí ntfsfix

1 root@0:~# ntfsfix /dev/sda4
Mounting volume... Windows is hibernated, refused to mount.
FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Windows is hibernated, refused to mount.
Remount failed: Operation not permitted
1 root@0:~#

Nedá se nic dělat, musíme Windows nastartovat a udělat v nich reboot, protože jsou Windows v hibernovaném stavu a NTFS není korektně odmountován. Po restartu restartu Windows budu mačkat F12 a nabootuji Finnix znova, teď už bude NTFS filesystém korektně odpojen.

Teď se to povedlo
root@0:~# ntfs-3g /dev/sda4 /mnt/disk/
root@0:~# ls -l /mnt/disk/
total 9172028
drwxrwxrwx 1 root root       4096 May 15  2023 '$Recycle.Bin'
drwxrwxrwx 1 root root          0 Feb 16  2023 '$WINDOWS.~BT'
drwxrwxrwx 1 root root          0 Jul 19  2023 '$Windows.~WS'
drwxrwxrwx 1 root root          0 Dec 12 21:11 '$WinREAgent'
lrwxrwxrwx 2 root root         16 Nov 19  2022 'Documents and Settings' -> /mnt/disk//Users
-rwxrwxrwx 2 root root       8192 Dec 21 03:00  DumpStack.log.tmp
drwxrwxrwx 1 root root          0 Jul 19  2023  ESD
-rwxrwxrwx 1 root root 6825185280 Feb  8 04:23  hiberfil.sys
drwxrwxrwx 1 root root          0 Nov  2  2022  Intel
drwxrwxrwx 1 root root          0 Jan 17  2023  OFFICE2019
-rwxrwxrwx 1 root root 2550136832 Dec 21 03:00  pagefile.sys
drwxrwxrwx 1 root root          0 Dec  7  2019  PerfLogs
drwxrwxrwx 1 root root       4096 Nov 29 13:13  ProgramData
drwxrwxrwx 1 root root      12288 Dec  1 07:13 'Program Files'
drwxrwxrwx 1 root root       4096 Oct 21 18:10 'Program Files (x86)'
drwxrwxrwx 1 root root          0 Nov 19  2022  Recovery
-rwxrwxrwx 1 root root   16777216 Dec 21 03:00  swapfile.sys
drwxrwxrwx 1 root root       4096 Feb  2 00:34 'System Volume Information'
drwxrwxrwx 1 root root       4096 May 15  2023  Users
drwxrwxrwx 1 root root      16384 Dec 21 02:59  Windows
root@0:~#

Přepneme se do adresáře /mnt/disk/Windows/System32/config kde najdeme soubor SAM a tam jsou hesla lokálních uživatelů Windows.

Použijeme program chntpw -i SAM, volba i znamená interaktivní režim.

1 root@0:/mnt/disk/Windows/System32/config# chntpw -i SAM
chntpw version 1.00 140201, (c) Petter N Hagen
Hive <SAM> name (from header): <\SystemRoot\System32\Config\SAM>
ROOT KEY at offset: 0x001020 * Subkey indexing type is: 686c <lh>
File size 131072 [20000] bytes, containing 10 pages (+ 1 headerpage)
Used for data: 335/35624 blocks/bytes, unused: 41/33688 blocks/bytes.



<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <SAM>

  1 - Edit user data and passwords
  2 - List groups
      - - -
  9 - Registry editor, now with full write support!
  q - Quit (you will be asked if there is something to save)


What to do? [1] ->

Teď už to bude snadné, použijeme volbu 1 Edit user data and passwords

Hola už vidéme uživatele Windows
===== chntpw Edit User Info & Passwords ====

| RID -|---------- Username ------------| Admin? |- Lock? --|
| 03e9 | admin                          | ADMIN  |          |
| 01f4 | Administrator                  | ADMIN  | dis/lock |
| 01f7 | DefaultAccount                 |        | dis/lock |
| 01f5 | Guest                          |        | dis/lock |
| 03ea | jirka                          |        |          |
| 01f8 | WDAGUtilityAccount             |        | dis/lock |

Please enter user number (RID) or 0 to exit: [3e9]

Bude nás zajímat uživatel admin s RID 03e9 a ne uživatel Administrator s RID 01f7, neboť uživatel Administrátor je zakázán. Pokud není ve Windows explicitně vytvořen účet Administrator, třeba příkazem net user Administrator /active:yes heslo_pro_admina, tak ho systém Windows nepoužívá a administrátorem je uživatel, zadaný při instalaci OS.

Stiskneme Enter.

================= USER EDIT ====================

RID     : 1001 [03e9]
Username: admin
fullname:
comment :
homedir :

00000220 = Administrators (which has 2 members)

Account bits: 0x0214 =
[ ] Disabled        | [ ] Homedir req.    | [X] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     |
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   |
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  |
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  |

Failed login count: 0, while max tries is: 0
Total  login count: 189

- - - - User Edit Menu:
 1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
 3 - Promote user (make user an administrator)
 4 - Add user to a group
 5 - Remove user from a group
 q - Quit editing user, back to user select
Select: [q] >

Teď už jenom zbývá vymazat heslo, volba 1 - Clear (blank) user password

Select: [q] > 1
Password cleared!
================= USER EDIT ====================

RID     : 1001 [03e9]
Username: admin
fullname:
comment :
homedir :

00000220 = Administrators (which has 2 members)

Account bits: 0x0214 =
[ ] Disabled        | [ ] Homedir req.    | [X] Passwd not req. |
[ ] Temp. duplicate | [X] Normal account  | [ ] NMS account     |
[ ] Domain trust ac | [ ] Wks trust act.  | [ ] Srv trust act   |
[X] Pwd don't expir | [ ] Auto lockout    | [ ] (unknown 0x08)  |
[ ] (unknown 0x10)  | [ ] (unknown 0x20)  | [ ] (unknown 0x40)  |

Failed login count: 0, while max tries is: 0
Total  login count: 189
** No NT MD4 hash found. This user probably has a BLANK password!
** No LANMAN hash found either. Try login with no password!

- - - - User Edit Menu:
 1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
 3 - Promote user (make user an administrator)
 4 - Add user to a group
 5 - Remove user from a group
 q - Quit editing user, back to user select
Select: [q] >

Teď už jenom vyskočit q a uložit.

- - - - User Edit Menu:
 1 - Clear (blank) user password
(2 - Unlock and enable user account) [seems unlocked already]
 3 - Promote user (make user an administrator)
 4 - Add user to a group
 5 - Remove user from a group
 q - Quit editing user, back to user select
Select: [q] > q


<>========<> chntpw Main Interactive Menu <>========<>

Loaded hives: <SAM>

  1 - Edit user data and passwords
  2 - List groups
      - - -
  9 - Registry editor, now with full write support!
  q - Quit (you will be asked if there is something to save)


What to do? [1] -> q

Hives that have changed:
 #  Name
 0  <SAM>
Write hive files? (y/n) [n] : y
 0  <SAM> - OK
2 root@0:/mnt/disk/Windows/System32/config#

Je hotovo. Zbývá úklid a restart.

2 root@0:/mnt/disk/Windows/System32/config# cd ..
root@0:/mnt/disk/Windows/System32# cd
root@0:~# umount /mnt/disk
root@0:~# reboot
A jsme ve Windows

Výše popsaným způsobem se dostanete do každého počítače, ke kterému máte fyzický přístup. Tím vás nenabádám, abyste to dělali s cizími počítači, protože to může být trestným činem. Pokud však některý počítačový nedouk (lidově trouba) heslo zapomene, a potřebujete mu pomoct, tak se výše uvedený postup může hodit.

Kdy to nejde, aneb jak tomuto zabránit.

Můžeme tomuto zabránít jenom tak, že máme kompletně zašifrovaný pevný disk. Na Linuxu to je běžné a jmenuje se to Luks https://cs.wikipedia.org/wiki/Linux_Unified_Key_Setup Většina instalátorů Linuxu nabízí při instalaci zašifrování celého disku. Já to aktivně používám na svém LinuxMintu, funguje to i na Debianu, Ubuntu, Fedoře a ostatních distribucích (osobně jsem to nezkoušel, protože je nepoužívám).

Na Windows existovalo neprolomitelné šifrování disku, které se jmenuje TrueCrypt ale autoři s tím sekli, kvůli výhrůžkám třípísmenkových agentur. Nyní se dá používat VeraCrypt, které bylo i v roce 2016 auditováno a nebyly v něm shledány žádné podstatné chyby. Ke stažení je na serveru SourceForge https://sourceforge.net/projects/veracrypt/


1. můžeme samozřejmě použít i jinou distribuci Linuxu. Otázkou je, zda tam budeme mít nástroj chntpw.