В данной статье речь пойдёт о том, как в Windows XP изменить тип своей учётной записи, когда другие способы уже бессильны. Причём в случае успеха учётную запись будет невозможно изменить или удалить стандартным путём из-за какого-то неизвестного мне глюка, возникающего при взломе. При этом система работает нормально.

Представьте ситуацию: на работе, в универе или дома злой админ/родитель сделал вас ограниченным пользователем. Понятно, чего вы хотите. Но админ попался параноидальный и читающий интернеты, поэтому встроенный аккаунт "Администратор" запаролен накрепко, как и аккаунт самого админа (пароль длиннее 14 символов, рандомный, написан с использованием латинской, русской, китайской, арабской, еврейской и всех остальных кодировок, цифр и прочих знаков, легко ломаемый LM-хэш отсутствует, а значит, брутфорсить пароль с помощью всяких SAMInside или LCP вы будете очень долго), а сносить пароль админа вы не хотите, поскольку он часто сидит за этим компом под своей учеткой. Остаётся одно:

-------ВЗЛОМ САМОЙ СИСТЕМЫ С ЦЕЛЬЮ ИЗМЕНИТЬ ТИП СВОЕЙ ЗАПИСИ------

  Немного теории

Системы Windows семейства NT, к которым относится и XP, определяют права пользователей двумя путями: на основе их членства в определённой группе и на основе некоторых параметров в реестре, ограничивающих деятельность пользователя (к примеру, невозможность запуска некоторых программ либо запуска только тех, которые разрешены). В данной статье речь пойдёт только об изменении типа учётной записи. Прочие запреты легко можно обойти, имея полный доступ к реестру из-под админской записи.
Группа администраторов имеет практически полные права (и может легко получить все права). Примером того, чего админу "запрещено", является раздел реестра HKEY_LOCAL_MACHINE\SAM\SAM, где хранятся данные о пользователях и их группах. Ниже будет описано, как обойти этот запрет.
Для изменения типа учётной записи отдельно взятого юзера необходимо подправить данные в разделе HKEY_LOCAL_MACHINE\SAM\SAM, а именно стереть его идентификатор (так называемый SID) из группы "Обычные пользователи" и записать его в группу "Администраторы".
Но Windows не даёт возможности не-админу лезть в общекомпьютерные настройки реестра. Так же она не позволяет скопировать файлы реестра. Поэтому придётся использовать ДРУГУЮ операционную систему (если она есть на жёстком диске, то хорошо, в противном случае нужно добыть загрузочную флэшку, диск или на худой коней дискету с DOS), чтобы скопировать нужный файл и работать с ним на другом компе.

  Суть задачи:

- нужно скопировать себе нужный файл реестра (а именно C:\WINDOWS\System32\Config\Sam), где и хранятся все учётные записи.
- подправить его на своём компе, переместив SID юзера из группы "Обычные пользователи" в группу "Администраторы"
- вставить подправленный Sam-файл обратно и посмеяться над админом...

  Требуемое оборудование:

- любое средство стороннего доступа, подходящее к данному компу (диск типа LiveCD или ERD Commander, загрузочная флэшка с тем же WinPE, дискета DOS на худой конец)
- другой комп, на котором вы админ (система на этом компе может быть хоть Windows 7 x32).

  Требуемые знания:

- начальное понятие о реестре Windows, типах параметров (Википедия Вам в помощь!)
- умение обращаться с шестнадцатеричной системой (там же)

(в данной статье все шестнадцатеричные числа обозначены с индексом h на конце для отличия от обычных десятеричных)

  ВЗЛОМ

  1-й этап: кража Sam-файла

Производится так же, как и при попытке взломать пароль: подключите некий носитель к компу и копируйте Sam. При этом оставьте там копию оригинального файла, иначе потом можете попортить систему нафиг, если неправильно исправите Sam-файл.

  2-й этап: непосредственно взлом

(Ламерам) Запускайте regedit.exe (C:\WINDOWS\regedit.exe) или ещё какую-нибудь сходную программу.
Как вы уже, наверное, догадались (или где-нибудь прочитали), SAM - это один из файлов-ульев (англ. "Hive", в корявом переводе мокрософтовцев - "куст"), который представляет собой ключ HKEY_LOCAL_MACHINE\SAM\SAM. Подключите его к своему реестру (выделив HKLM, жмите "Файл"->"Загрузить куст" и укажите на украденный файл, который лучше всего разместить в корневом каталоге того же C:\)
С этого момента вы не сможете скопировать/удалить файл Sam со своего харда, поскольку система не даёт никому манипулировать с файлами своего реестра (пока вы не отключите данный файл от реестра)
Следующее препятствие: доступ к ключу HKEY_LOCAL_MACHINE\SAM\SAM ДеБилл Гейтс закрыл для всех, но админу это поправить несложно (правой кнопкой по ключу, выберите пункт "разрешения" и назначьте администраторам полный доступ к этому ключу, далее жмите F5 и начинайте изучать данный ключ).
Внутри ключа SAM есть несколько подключей, из них нас интересуют 2, а именно:

HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users - данные на юзеров
и
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases - данные на группы юзеров

Раскройте оба указанных раздела и просмотрите содержимое. В HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users лежат несколько подключей с именами из 4 байт, а далее - подключ Names. Раскрываем его и видим знакомые имена юзеров, в том числе и ваше. Некоторые имена типа SUPPORT_388945a0 вы, наверное, видите впервые.
Каждый подключ имени содержит некое двоичное значение. Например, "Администратор" - 0x1F4 (всегда). Это так называемый RID пользователя, обычно преподносимый разными пособиями по реестру в десятеричной форме (в данном примере 0x1F4=500). Ваш аккаунт также имеет свой RID.
Ну что, поняли, что это за подключи внутри HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users? Их имена - это чьи-то RID'ы. В каждом таком подключе находятся две записи типа REG_BINARY, а именно "F" и "V"
При взгляде на них у ламера затрясётся мышка, как того и хочет ДеБилл Гейтс, припрятавший самые ценные данные реестра от любопытных пользователей. Преодолейте свой страх и вперёд!
Итак, "F" - это флаги, относящиеся к пользователю (размер параметра всегда 50h=80 байт), а "V" - индексированный блок данных переменной длины, в котором хранится много чего интересного (как раз отсюда SAMInside и LCP вытаскивают шифрованные LM- и NT-пароли), но нам нужна сейчас только одна вещь - так называемый SID пользователя. О нём далее поподробнее.
SID (Security IDentificator) - ещё одна вещь, относящаяся к пользователю. В шестнадцатеричном виде он представляет собой последовательность из 28 байт (всегда). Эта последовательность состоит из 3-х частей. Вот они:
- первые 12 байт - стандартная запись 01 05 00 00 00 00 00 05 15 00 00 00
- следующие 12 байт - запись, уникальная для каждой установленной Винды, но для каждого SID'а на данном компе одинаковая. Для нас никакой проблемы не представляет.
- последние 4 байта - не что иное, как RID пользователя (Вниманию ламеров: когда значение типа DWORD копируется в REG_BINARY, оно записывается наоборот. Например: был у "Администратора" RID 0x000001F4, в REG_BINARY стал F4 01 00 00).
Можете в содержимое "V" не лезть (хотя вам никто не помешает глазами отыскать там SID, он примерно в середине записи). Усвойте следующее: чтобы самому написать SID, нужно скопировать какой-нибудь имеющийся и поправить 4 последних байта на свой RID.

Теперь рассмотрим HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases. Тут система точно такая же, но применённая к группам пользователей. В подключе Names находятся имена групп, из которых нас интересуют "Пользователи" (где скорее всего сейчас и находится ваш аккаунт)(RID группы - 0x221) и заветная группа "Администраторы" (RID группы - 0x220). Подключ с именем-RID'ом содержит единственный параметр "C" типа REG_BINARY. Он-то нам и нужен ради нашей цели.
Как и параметр "V", "C" представляет собой индексированную последовательность байт. В данном параметре содержится имя группы, её описание, и САМОЕ ГЛАВНОЕ - SID'ы юзеров! Надо только суметь их сюда добавить/удалить из плохой группы "обычных пользователей".
Индексация выглядит так: перед блоками данных (начинаются с байта 0034h) находятся несколько индексирующих записей (с 0004h по 0033h), содержащих сведения об адресе первого байта своего блока, количестве байт в блоке + некий счётчик (в нашем случае - число юзеров в группе). Каждый параметр внутри индексирующей записи занимает 4 байта, но, поскольку юзеров у вас на компе наверняка меньше 16, вас будет интересовать только первый байт записи.
Для блока, содержащего SID'ы, используются индексирующие его записи в байтах 002Ch (для ламеров, которые ещё не поняли шестнадцатеричную систему - в окне просмотра regedit'а это 5-й по счёту байт в строке № 0028(h)) и 0030h. Байт 002C содержит количество байт (в шестнадцатеричном виде), потраченное на запись SID'ов, а байт 0030h - количество самих SID'ов, а значит, и юзеров в группах (обозначим как N). Очевидно, что:

  Значение в 002Ch = N * 28

Вам повезло - записи SID'ов находятся в конце параметра "C", а значит, возиться с адресом первого байта блока не придётся. Нужно только подправлять значения в байтах 002Ch и 0030h.
Теперь просмотрите самый конец параметра "C". Там вы можете увидеть несколько SID'ов. Наверняка там будет SID "Администратора" (заканчивается на RID F4 01 00 00) и SID пользователя-админа, который Вас лишил этой привилегии. Само собой, их количество соответствует N, прописанному в байте 0030h (а общее число байт, потраченное на запись SID'ов, равно произведению N на 28).

Для ламеров, не умеющих считать: вот вам таблица значений в зависимости от N

N |0 |1 |2 |3 |4
-----------------------------------
002Ch |00h |1Ch |38h |54h |70h ну и так далее
0030h |00h |01h |02h |03h |04h

Отдельного внимания заслуживает группа "Обычные пользователи" (RID группы - 0x221). Тут какая-то специфическая запись индексов, относящихся к блоку SID'ов. Не исключено, что подлые мокрософтовцы нарочно сделали так, чтобы запутать взломщика (на этот вопрос можно ответить, только дизассемблировав системный процесс, ответственный за работу с учётными записями). Опытным путём установлены следующие зависимости:

Значение в 002Ch = (N + 1) * 28 - 4 (записано в шестнадцатеричном виде, не забываем!)

Значение в 0030h = N + 2

На всякий случай для ламеров приведу таблицу значений нужных битов в зависимости от N:

N |0 |1 |2 |3 |4
-----------------------------------
002Ch |18h |34h |50h |6Ch |88h ну и так далее
0030h |02h |03h |04h |05h |06h

  СОБСТВЕННО ВЗЛОМ

Для присвоения своему аккаунту прав админа подпишите его SID в группу "Администраторы", не забывая переписывать индексы в 002Ch и 0030h. Также не забудьте удалить свой SID из группы "Обычные пользователи", не забывая про описанную выше особенность этой группы. При добавлении можно использовать Ctrl-C и Ctrl-V. Как уже говорилось выше, можно просто скопировать соседний SID и подправить 4 последних байта на свой RID.
Примечание: не важно, в каком порядке SID'ы расположены в ключе "C". Важно, что они там есть!

Для удаления аккаунта злого админа проделайте то же самое с его SID'ом. Теперь, если он не состоит ни в одной из групп, прав у него меньше, чем у встроенного аккаунта "Гость"!

Для ручного выпиливания своего аккаунта из реестра достаточно удалить данные о нём из HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users, а также файлов пользователя из C:\Documents and Settings\ после перезагрузки. Но лучше всё-таки удалить и SID пользователя из нужной группы, иначе потом при добавлении нового юзера этот SID будет считаться незанятым и возникнет коллизия.

  3-й этап: возвращение Sam-файла

Проделывается так же, как и его копирование. ВНИМАНИЕ! Не забудьте сделать резервную копию оригинального Sam! Лучше прямо в том же каталоге, где он и находился. В случае, если вы допустили ошибки при редактировании Sam, система у вас даже в безопасном режиме не запустится!

  ПОБОЧНЫЕ ЭФФЕКТЫ ВЗЛОМА

В ходе тестирования были выявлены следующие неприятные последствия:
- При входе под взломанной учёткой система несколько дольше грузится (дольше работает Wlnotify.dll, отвечающий за работу с учётками).
- Взломанную учётку НЕВОЗМОЖНО удалить стандартным путём (через "Панель управления"->"Учётные записи пользователей"). Выскакивает сообщение "Пользователь не является членом локальной группы" и всё. Так же невозможно поменять её тип на "ограниченную" (изменение не сохраняется). Причина - что-то не до конца взломано. Хотя система под взломанной учёткой работает нормально, нареканий пока не было. Считать ли это недостатком - ваше дело. Ведь теперь админ-недоучка, не читавший эту статью, ничего не сможет с вашей учёткой сделать!!! Способ борьбы с этим дефектом: создать новую учётную запись администратора, затем вручную уничтожить взломанную запись описанным выше способом.
Кстати: если описанным способом изменить тип взломанной учётки обратно на "ограниченную", то её можно удалить без проблем.

  СПОСОБЫ ЗАЩИТЫ ОТ ДАННОГО ВЗЛОМА

Пожалуй, только один способ: поставить пароль на вход в BIOS, в качестве 1-го устройства загрузки назначить жёсткий диск, убрать с него другие операционные системы. Затем засунуть системный блок в бронированный сейф (подумав ещё и о вентиляции блока!), сейф приковать цепями к батарее (чтобы взломщик не вскрыл корпус и не выдернул батарейку BIOS'а). И надейтесь, что взломщик не сможет программными методами обнулить пароль! Также прилепить рядом видеокамеру, снимающую действия пользователя. Что же ещё?... Ах да, не забудьте надеть шапочку из фольги для защиты от инопланетного психотронного генератора!