100 бед - 1 ресет
Всех приветствую. Вопрос вот в чем: задали в универе лабу: написать программу под Win для добавления учетных записей в системе и назначения им и группам прав. Как такое реализовывется? Где об этом почитать? Если можно, пример..
p.s. по возможности еще нужно написать руткит для работы программы не с админскими правами.
p.s. по возможности еще нужно написать руткит для работы программы не с админскими правами.
По первому вопросу греби в сторону WinAPI
NetUserAdd()
NetLocalGroupAdd()
NetGroupAdd()
там дальше сориентируешься.
p.s. по возможности еще нужно написать руткит для работы программы не с админскими правами.
Любой обход системы безопастности ранно или поздно закрывается заплатками, поэтому 100% работающей проги ты не сделаешь. Да и нахаляву тебе никто не позволит под простым юзверем творить в системе что взбредет. Тут уже надо полено писать, через него из Ring0 зверствовать.
Спасибо, попробую разобраться. Если что еще будет, выкладывайте
теперь сюда.
msdn2.microsoft.com/en-us/library/aa374947.aspx
Гугл иногда твоит чудеса)
support.microsoft.com/?scid=kb%3Ben-us%3B102102...
собственно, для разрешения чтения\записи\выполнения использовал константы
GENERIC_READ
GENERIC_WRITE
GENERIC_EXECUTE
GENERIC_ALL
Внимание вопрос: как сделать запрет на то же самое?
Имею в виду те галочки, что на скриншоте..
useradd
userdel
groupadd
groupdel
chmode
Пока делаю:
chown
cgrp
вопрос вот в чем, можно ли обеспечить работу этих программ не с админскими правами? Своего рода руткит..
Функции использовал: SetNamedSecurityInfo, NetUserAdd, NetGroupAdd и др..
По сути вы ставите вопрос так:
Можно ли обойти систему безопастности?
Любая прога запущена от имени какого-то пользователя, это либо явные пользователи, либо сныканные, типа SYSTEM и т.п. Под ограниченным пользователем вы не сможете воспользоваться этими апи, вы не сможете заинсталить свой драйвер в систему.
Единственное что вы можете сделать, это в своей проге запросить пароль от определенного админа на машине и юзая его перезапустить свою программу под администратором.
Но для этого в версиях выше NT есть стандартная функция в контекстном меню запуска Run As..
Для решения этой задачи надо иметь квалификацию несравненно выше нашей, притом что даже в таком случае вы не сможете найти стабильного и правильного решения проблемы. Потому что это решение будет выполнено на основе вирусных технологий и будет незаконно)...
Если пишете троянчика, то примите за точку отсчета что он должен запуститься с админскими правами..
Как достать из файла права владельца файла? (GENERIC_READ, GENERIC_WRITE, GENERIC_EXECUTE).
Делаю сначала так:
GetNamedSecurityInfo(way,SE_FILE_OBJECT,
GROUP_SECURITY_INFORMATION | OWNER_SECURITY_INFORMATION|DACL_SECURITY_INFORMATION,
&pSidName,
&pSidGroup,
&pDacl,
NULL,
&pSD);
Получаю используя pSidName имя владельца. А что дальше?