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


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.
# (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.
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.
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
===== 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
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/