{"id":149,"date":"2007-09-17T23:25:37","date_gmt":"2007-09-17T21:25:37","guid":{"rendered":"http:\/\/www.corelan.be:8800\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/"},"modified":"2007-09-17T23:25:37","modified_gmt":"2007-09-17T21:25:37","slug":"delegating-ad-admin-tasks-to-non-admin-accounts","status":"publish","type":"post","link":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/","title":{"rendered":"Delegating AD Admin tasks to non-Admin accounts"},"content":{"rendered":"<div class=\"ExternalClass31091D9E6FC444348C658824CFFDD196\">\n<p>Designing a distributed\/international Active Directory is certainly the most important piece of a successful AD implementation. One of the issues that should be dealt with is whether you want to allow other people to be Enterprise\/Domain Admin or not. If you ask me : it's not a good idea. You should restrict those rights to just a handful well-trained people and set up logging and auditing on those accounts and groups. Those admins can create the forest and domains, set up the top level OU structure and then delegate access on those OU's. This will preserve the confidentiality, integrity and availability of your AD. You basically limit the number of people who can blow up AD; and if someone else screws up, the worst they can do is screw up their own OU tree. Very nice &#8211; but a good security policy should not limit people in any way or prevent them from doing their job. So the real challenge is to allow local admins to do their job properly, without having to provide them with too much privileges. <\/p>\n<p>This post describes a couple of common tasks that can be delegated to local people, without having to grant those admins access to the &quot;keys to the kingdom&quot;. <\/p>\n<p>First of all, let's make a couple of assumptions : <\/p>\n<ol>\n<li>DC's should be dedicated. Interactive (local) logon to DC's must be avoided <\/li>\n<li>Making people local admin on a DC or member of &quot;Server Operators&quot; must be avoided at all times. While this would solve most of the issues, it will grant them too much rights at the same time <\/li>\n<li>Local admins are part of a group. We'll use the group name to grant necessary permissions. <\/li>\n<li>I'll assume that we are not talking about basic delegation : stuff that can be granted using a delegation wizard on OU level, or by using basic NTFS permissions. You should be able to set up those permissions yourself. <\/li>\n<\/ol>\n<p>So, in addition to the basic stuff, here are a couple of tasks that could trigger a request to get access to. <\/p>\n<ul>\n<li>Access to the event log on a DC <\/li>\n<li>Authorize a DHCP server <\/li>\n<li>Manage DHCP <\/li>\n<li>Manage DNS <\/li>\n<li>Manage WINS <\/li>\n<li>Create and link GPO's (including creating\/linking GPO's to sites) <\/li>\n<\/ul>\n<p>&#160;&#160;&#160;&#160; <\/p>\n<h4>Access to the event log on a DC <\/h4>\n<p>By default, access to the event log on a DC is protected. This means that nobody except admins can get access to the log. Even read only access is not allowed. However, there may be very valid reasons to allow certain members of the IT staff to access the event log on a DC. Furthermore, we should set this up in such a way that logging on locally to the DC should not be necessary. Unfortunately, Microsoft has somewhat hidden the options to allow the administrators to delegate access to the eventlog. In fact, these permissions must be set in the registry. The security of each log is stored as a (rather cryptic) SDDL (Security Descriptor Definition Language) string under <span style=\"font-size: 10pt; font-family: courier new\"><strong>HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Eventlog.<\/strong><\/span> The Security Descriptors for each event log are stored under : <\/p>\n<div>\n<table style=\"border-collapse: collapse\" border=\"0\">\n<colgroup>\n<col style=\"width: 116px\" \/>\n<col style=\"width: 470px\" \/><\/colgroup>\n<tbody valign=\"top\">\n<tr style=\"background: #4bacc6\">\n<td style=\"padding-right: 7px; border-top: #4bacc6 1pt solid; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt; color: white\"><strong>Event log<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: #4bacc6 1pt solid; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt; color: white\"><strong>Registry location<\/strong><\/span><\/p>\n<\/td>\n<\/tr>\n<tr style=\"height: 15px\">\n<td style=\"padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>Application<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\Application\\CustomSD<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>Directory Service<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\ Directory Service \\CustomSD<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>DNS Server<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\DNS Server\\CustomSD<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>File Replication Service<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\File Replication Service\\CustomSD<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>Security<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\Security\\CustomSD<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>System<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\System\\CustomSD<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p> If you open the registry on a DC and look at the default entry for f.i. the Application event log, you'll see a SDDL string, which looks like this : <\/p>\n<p><span style=\"font-size: 9pt; font-family: courier new\">&#160;<strong>O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3) <\/strong><\/span><\/p>\n<p>Before showing you how to change this string to allow access to a specific group, I need to explain some basics about the SDDL. <\/p>\n<p>Entries are separated by round brackets, the fields within an entry are separated by semi-colons. The first field can be &quot;D&quot; or &quot;A&quot;. D means &quot;deny&quot;, A means &quot;Allow&quot;. &quot;Deny&quot; overrules &quot;Allow&quot;. The last fields indicates whom the permission applies to. The most important values are : <\/p>\n<div>\n<table style=\"border-collapse: collapse\" border=\"0\">\n<colgroup>\n<col style=\"width: 72px\" \/>\n<col style=\"width: 448px\" \/><\/colgroup>\n<tbody valign=\"top\">\n<tr style=\"background: #4bacc6\">\n<td style=\"padding-right: 7px; border-top: #4bacc6 1pt solid; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt; color: white\"><strong>Abbreviation<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: #4bacc6 1pt solid; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt; color: white\"><strong>Corresponds to :<\/strong><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>AN<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">Anonymous<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>BG<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">Built-in (local) guests<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>SY<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">Local System<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>BA<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">Built-in (local) administrators<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>SO<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">Server Operators<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>IU<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">Interactive User<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>SU<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; border-top: medium none; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">Service Logon User<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding-right: 7px; padding-left: 7px; padding-bottom: 1px; border-left: #4bacc6 1pt solid; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\"><strong>S-1-5-3<\/strong><\/span><\/p>\n<\/td>\n<td style=\"border-right: #4bacc6 1pt solid; padding-right: 7px; padding-left: 7px; padding-bottom: 1px; padding-top: 1px; border-bottom: #4bacc6 1pt solid\" valign=\"middle\">\n<p><span style=\"font-size: 8pt\">Sid indicating &quot;Batch&quot; (all users who are logged on via a batch queue facility such as &quot;task scheduler)<\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p>(Look at http:\/\/technet2.microsoft.com\/windowsserver\/en\/library\/86cf2457-4f17-43f8-a2ab-7f4e2e5659091033.mspx?mfr=true to see the well-known SID's, or <a href=\"https:\/\/web.archive.org\/web\/20150219003542\/http:\/\/support.microsoft.com:80\/kb\/914392\/en-us\">http:\/\/support.microsoft.com\/kb\/914392\/en-us<\/a> for a full list of abbreviations that can be used in the SDDL) <\/p>\n<p>The middle field describes the permissions. Some common (hexadecimal) values that apply to event logs are :      <br \/>0x1 : Read, 0x2 : Write, 0x4 : Clear.       <br \/>If you want to combine rights, just add the values. So If you want to grant read, write and clear rights, you should use 0x7 as permission. <\/p>\n<p>Quick example : if you want to allow read access to the event log, for all authenticated users, you should add the following string to the already existing SDDL string : <span style=\"font-size: 9pt; font-family: courier new\"><strong>(A;;0x1;;;AU) <\/strong><\/span><\/p>\n<p>If you want to grant permissions to a certain group, you will need to find the group's sid first. I'm sure you can find the sid (adsiedit.msc, hyena, &#8230;). Let's say the sid of the group you want to grant read access to is <span style=\"font-size: 9pt; font-family: courier new\">S-1-5-21-4146450766-854793612-507905764-1120<\/span>, all you need to do is use that SID in the SDDL string. In this example, the string you need to add to the already existing SDDL is <span style=\"font-size: 9pt; font-family: courier new\">(A;;0x1;;;S-1-5-21-4146450766-854793612-507905764-1120)<\/span> <\/p>\n<p>The same rules apply to all event log CustomSD entries. Basically, you need to create the correct strings for each event log, and add them to the registry on each domain controller. <\/p>\n<p>If you want to add these permissions using a GPO, you'll need to make the options available first. By default, there is no way to set this using a GPO because the &quot;ability&quot; to set the option is simply hidden. <\/p>\n<p>You can use the following procedure to unhide the options and edit the Domain Controller GPO in order to centrally deploy the permissions : <\/p>\n<p>1. Use a text editor such as Notepad to open the Sceregvl.inf in the %Windir%\\Inf folder. <\/p>\n<p>2. Add the following lines to the [Register Registry Values] section: <\/p>\n<p><span style=\"font-size: 8pt; font-family: courier new\">MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\Application\\CustomSD,1,%AppCustomSD%,2       <br \/>MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\Security\\CustomSD,1,%SecCustomSD%,2        <br \/>MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\System\\CustomSD,1,%SysCustomSD%,2        <br \/>MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\Directory Service\\CustomSD,1,%DSCustomSD%,2        <br \/>MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\DNS Server\\CustomSD,1,%DNSCustomSD%,2        <br \/>MACHINE\\System\\CurrentControlSet\\Services\\Eventlog\\File Replication Service\\CustomSD,1,%FRSCustomSD%,2 <\/span><\/p>\n<p>3. Add the following lines to the [Strings] section: <\/p>\n<p><span style=\"font-size: 8pt; font-family: courier new\">AppCustomSD=&quot;Eventlog: Security descriptor for Application event log&quot;       <br \/>SecCustomSD=&quot;Eventlog: Security descriptor for Security event log&quot;        <br \/>SysCustomSD=&quot;Eventlog: Security descriptor for System event log&quot;        <br \/>DSCustomSD=&quot;Eventlog: Security descriptor for Directory Service event log&quot;        <br \/>DNSCustomSD=&quot;Eventlog: Security descriptor for DNS Server event log&quot;        <br \/>FRSCustomSD=&quot;Eventlog: Security descriptor for File Replication Service event log&quot; <\/span><\/p>\n<p>4. Save the changes you made to the Sceregvl.inf file, and then run the regsvr32 scecli.dll command. <\/p>\n<p>5. Edit the GPO (Domain Controller GPO if that is target you want to apply the settings to) <\/p>\n<p>Double-click the following branches to expand them: Computer Configuration - Windows Settings - Security Settings - Local Policies - Security Options <\/p>\n<p>View the right panel to find the new &quot;Eventlog&quot; settings. <\/p>\n<p>Enable the CustomSD strings and paste the new SDDL. Don't forget to get the original strings from the registry, append your custom permissions, and paste the entire string into the field. <\/p>\n<p>As soon as the GPO is applied, the changes will be applied. A reboot is not required. <\/p>\n<p>For completeness, the default values under Windows 2003 server SP1 are : <\/p>\n<p>Application :      <br \/><span style=\"font-size: 7pt; font-family: courier new\">O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)<\/span> <\/p>\n<p>Directory Service :      <br \/><span style=\"font-size: 7pt; font-family: courier new\">O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)<\/span> <\/p>\n<p>DNS Server :      <br \/><span style=\"font-size: 7pt; font-family: courier new\">O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)<\/span> <\/p>\n<p>File Replication Service :      <br \/><span style=\"font-size: 7pt; font-family: courier new\">O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)<\/span> <\/p>\n<p>Security :      <br \/><span style=\"font-size: 7pt; font-family: courier new\">O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0005;;;SY)(A;;0x5;;;BA)<\/span> <\/p>\n<p>System :      <br \/><span style=\"font-size: 7pt; font-family: courier new\">O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x5;;;SO)(A;;0x1;;;IU)(A;;0x1;;;SU)(A;;0x1;;;S-1-5-3)(A;;0x2;;;LS)(A;;0x2;;;NS)<\/span> <\/p>\n<p>&#160;&#160;&#160;&#160; <\/p>\n<h4>Authorize a DHCP server <\/h4>\n<p>By default, only a limited set of admins (Enterprise Admins) have permissions to authorize a DHCP server. In order to delegate this permission to non-admins, log on to the first DC in the forest (with Enterprise Admin rights) and open Active Directory Sites &amp; Services. Make sure the Services node is visible. (Select &quot;Active Directory Sites and Services, click view &#8211; enable &quot;Show Service Node&quot;). Double-click &quot;Services&quot;, and then right click &quot;NetServices&quot;. Open the properties of &quot;NetServices&quot; and go to the 'Security' tabsheet. Add the group of admins you want to all to authorize DHCP servers, and give the group full control (or at least read, write, create all child objects). Make sure the security applies to &quot;this object and all child objects&quot;. By the way : do not delegate permissions using Domain Local groups. Always use Domain Global groups ! If you have multiple domains and you've used Local groups, then users may get a &quot;Access Denied&quot; because their DC doesn't know how to handle the local groups of another domain. <\/p>\n<p>Wait for replication to occur and you're all set. <\/p>\n<p>From that point forward the group with IT staff members will be able to authorize a DHCP server. In the event something went wrong during an authorize, or after the IP address of a DHCP server was changed or something, and another authorize fails with the following message : &quot;the specified servers are already present in the directory service&quot;, you'll need to clean up AD first. <\/p>\n<p>Go back to the Sites&amp;Services &#8211; Netservices, and remove the entry that corresponds with the DHCP server that has an authorization issue. Next, open adsiedit.msc, go to &quot;Configuration&quot;, &quot;CN=Configuration, &#8230;.&quot;, &quot;CN=Services&quot;, &quot;CN=NetServices&quot;. Right click Netservices and go to properties.      <br \/><a href=\"\/wp-content\/uploads\/2008\/09\/091707-1500-delegatinga1.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" height=\"345\" alt=\"091707_1500_DelegatingA1\" src=\"\/wp-content\/uploads\/2008\/09\/091707-1500-delegatinga1-thumb.png\" width=\"482\" \/><\/a> <\/p>\n<p>Edit the dchpServers attribute and make sure the server is removed from this list as well. Now wait until the replication cycle has completed and try again. <\/p>\n<p>&#160;&#160; <\/p>\n<h4>Manage DHCP <\/h4>\n<p>Add the group of admins to the builtin Security Group &quot;DHCP Administrators&quot;. You can find this group in AD Users &amp; Computers, under the default &quot;Users&quot; OU. <\/p>\n<h4>Manage DNS <\/h4>\n<p>Add the group of admins to the builtin Security Group &quot;DNSAdmins&quot;. You can find this group in AD Users &amp; Computers, under the default &quot;Users&quot; OU. Note : this will grant members of that group admin access to the entire DNS service. If you want to restrict access to just a specific domain, you can use the security tabsheet on that specific zone (or on server level). <\/p>\n<h4>Manage WINS <\/h4>\n<p>The only way to grant access to a WINS server is by either putting granting &quot;Server Operators&quot; or local administrator rights. Both scenario's are not a good idea when applied to DC's. Furthermore, &quot;Server Operators&quot; is a protected group, which means that the security on every member object will be reset every day. Result : loss of access to your own user account. (<a href=\"http:\/\/support.microsoft.com\/?kbid=232199\"><span style=\"font-size: 10pt; font-family: verdana\">http:\/\/support.microsoft.com\/?kbid=232199<\/span><\/a><span style=\"font-size: 10pt; font-family: verdana\">). So what are the options ? The only thing I can think of is avoiding using WINS on a DC, but running WINS on a member server; and then grant admin access to that member server. Or &#8211; even better &#8211; convince the IT staff that the WINS setup is pretty static and that you'll do all management if required. My recommendation : don't delegate permissions to WINS. That's the safest solution.<\/span> <\/p>\n<h4>Create and link GPO's <\/h4>\n<p><span style=\"font-size: 10pt; font-family: verdana\">Log on to the first DC in the forest, with Enterprise Admin rights. Open AD Users &amp; Computers, go to the &quot;Users&quot; folder, open the &quot;Group Policy Creator Owners&quot; group and add the IT staff group.       <br \/>Additionally, make sure the AD Administrators group has RW access to the SYSVOL\/&lt;domain&gt;\/Policies folder on the DC's (which should be the case, because of the &quot;Group Policy Creator Owners&quot; membership)        <br \/>Next, open the GPMC (Group Policy Management Console - http:\/\/www.microsoft.com\/windowsserver2003\/gpmc\/default.mspx), go to Forest: &lt;domain&gt;, Domains, &lt;domain&gt;. Select &lt;domain&gt; and in the right pane, go to the Delegation tab sheet.        <br \/>Add rights to the IT staff group to link GPO's, do GPO modelling and analyse results :        <br \/>- select each of the permissions in the drop-down at the top <\/span><\/p>\n<p><a href=\"\/wp-content\/uploads\/2008\/09\/091707-1500-delegatinga2.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" height=\"148\" alt=\"091707_1500_DelegatingA2\" src=\"\/wp-content\/uploads\/2008\/09\/091707-1500-delegatinga2-thumb.png\" width=\"334\" \/><\/a> <span style=\"font-size: 10pt; font-family: verdana\">       <br \/>- add the IT staff group to the list by clicking the &quot;Add button&quot; at the bottom.. <\/span><\/p>\n<p><span style=\"font-size: 10pt; font-family: verdana\">If you want to allow Resultant Set Of Policy permissions (logging and\/or planning mode), click the &quot;Advanced&quot; button in the lower right corner, select the group, click &quot;Edit&quot;, and assign the required Resultant Set Of Policy permissions. <\/span><\/p>\n<p><span style=\"font-size: 10pt; font-family: verdana\">       <br \/>Next, select &quot;Sites&quot;, &quot;show sites&quot;, and add &quot;Link GPO's&quot; Access to the sites that will be managed by this IT staff group. (Go to the delegation tab sheet and add the group) <\/span><\/p>\n<p>&#160;&#160;&#160;&#160; <\/p>\n<p>&#160;&#160;&#160;&#160; <\/p>\n<p>Links : <\/p>\n<p><a href=\"http:\/\/support.microsoft.com\/default.aspx?kbid=323076\">http:\/\/support.microsoft.com\/default.aspx?kbid=323076<\/a>      <br \/>http:\/\/www.microsoft.com\/technet\/security\/guidance\/serversecurity\/tcg\/tcgch06n.mspx      <br \/>http:\/\/mkeadle.org\/?p=88<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Designing a distributed\/international Active Directory is certainly the most important piece of a successful AD implementation. One of the issues that should be dealt with is whether you want to allow other people to be Enterprise\/Domain Admin or not. If you ask me : it's not a good idea. You should restrict those rights to &hellip; <a href=\"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> \"Delegating AD Admin tasks to non-Admin accounts\"<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[31,127,26],"tags":[32],"class_list":["post-149","post","type-post","status-publish","format-standard","hentry","category-active-directory","category-security","category-windows-server","tag-active-directory"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Delegating AD Admin tasks to non-Admin accounts - Corelan | Exploit Development &amp; Vulnerability Research<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Delegating AD Admin tasks to non-Admin accounts - Corelan | Exploit Development &amp; Vulnerability Research\" \/>\n<meta property=\"og:description\" content=\"Designing a distributed\/international Active Directory is certainly the most important piece of a successful AD implementation. One of the issues that should be dealt with is whether you want to allow other people to be Enterprise\/Domain Admin or not. If you ask me : it&#039;s not a good idea. You should restrict those rights to &hellip; Continue reading &quot;Delegating AD Admin tasks to non-Admin accounts&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/\" \/>\n<meta property=\"og:site_name\" content=\"Corelan | Exploit Development &amp; Vulnerability Research\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/corelanconsulting\" \/>\n<meta property=\"article:published_time\" content=\"2007-09-17T21:25:37+00:00\" \/>\n<meta name=\"author\" content=\"corelanc0d3r\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@corelanc0d3r\" \/>\n<meta name=\"twitter:site\" content=\"@corelanc0d3r\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2007\\\/09\\\/17\\\/delegating-ad-admin-tasks-to-non-admin-accounts\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2007\\\/09\\\/17\\\/delegating-ad-admin-tasks-to-non-admin-accounts\\\/\"},\"author\":{\"name\":\"corelanc0d3r\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/person\\\/3be5542b9b0a0787893db83a5ad68e8f\"},\"headline\":\"Delegating AD Admin tasks to non-Admin accounts\",\"datePublished\":\"2007-09-17T21:25:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2007\\\/09\\\/17\\\/delegating-ad-admin-tasks-to-non-admin-accounts\\\/\"},\"wordCount\":2413,\"publisher\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\"},\"keywords\":[\"Active Directory\"],\"articleSection\":[\"Active Directory\",\"Security\",\"Windows Server\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2007\\\/09\\\/17\\\/delegating-ad-admin-tasks-to-non-admin-accounts\\\/\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2007\\\/09\\\/17\\\/delegating-ad-admin-tasks-to-non-admin-accounts\\\/\",\"name\":\"Delegating AD Admin tasks to non-Admin accounts - Corelan | Exploit Development &amp; Vulnerability Research\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#website\"},\"datePublished\":\"2007-09-17T21:25:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2007\\\/09\\\/17\\\/delegating-ad-admin-tasks-to-non-admin-accounts\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2007\\\/09\\\/17\\\/delegating-ad-admin-tasks-to-non-admin-accounts\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/2007\\\/09\\\/17\\\/delegating-ad-admin-tasks-to-non-admin-accounts\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.corelan.be\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Delegating AD Admin tasks to non-Admin accounts\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#website\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/\",\"name\":\"Corelan CyberSecurity Research\",\"description\":\"Corelan publishes in-depth tutorials on exploit development, Windows exploitation, vulnerability research, heap internals, reverse engineering and security tooling used by professionals worldwide.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.corelan.be\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#organization\",\"name\":\"Corelan CyberSecurity Research\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/corelanlogo2_small-20.png\",\"contentUrl\":\"https:\\\/\\\/www.corelan.be\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/corelanlogo2_small-20.png\",\"width\":200,\"height\":200,\"caption\":\"Corelan CyberSecurity Research\"},\"image\":{\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/corelanconsulting\",\"https:\\\/\\\/x.com\\\/corelanc0d3r\",\"https:\\\/\\\/x.com\\\/corelanconsulting\",\"https:\\\/\\\/instagram.com\\\/corelanconsult\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.corelan.be\\\/#\\\/schema\\\/person\\\/3be5542b9b0a0787893db83a5ad68e8f\",\"name\":\"corelanc0d3r\",\"pronouns\":\"he\\\/him\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x\",\"caption\":\"corelanc0d3r\"},\"description\":\"Peter Van Eeckhoutte is the founder of Corelan and a globally recognized expert in exploit development and vulnerability research. With over two decades in IT security, he built Corelan into a respected platform for deep technical research, hands-on training, and knowledge sharing. Known for his influential exploit development tutorials, tools, and real-world training, Peter combines a strong research mindset with a passion for education\u2014helping security professionals understand not just how exploits work, but why.\",\"sameAs\":[\"https:\\\/\\\/www.corelan-training.com\",\"https:\\\/\\\/instagram.com\\\/corelanc0d3r\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/petervaneeckhoutte\\\/\",\"https:\\\/\\\/x.com\\\/corelanc0d3r\"],\"url\":\"https:\\\/\\\/www.corelan.be\\\/index.php\\\/author\\\/admin0\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Delegating AD Admin tasks to non-Admin accounts - Corelan | Exploit Development &amp; Vulnerability Research","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/","og_locale":"en_US","og_type":"article","og_title":"Delegating AD Admin tasks to non-Admin accounts - Corelan | Exploit Development &amp; Vulnerability Research","og_description":"Designing a distributed\/international Active Directory is certainly the most important piece of a successful AD implementation. One of the issues that should be dealt with is whether you want to allow other people to be Enterprise\/Domain Admin or not. If you ask me : it's not a good idea. You should restrict those rights to &hellip; Continue reading \"Delegating AD Admin tasks to non-Admin accounts\"","og_url":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/","og_site_name":"Corelan | Exploit Development &amp; Vulnerability Research","article_publisher":"https:\/\/www.facebook.com\/corelanconsulting","article_published_time":"2007-09-17T21:25:37+00:00","author":"corelanc0d3r","twitter_card":"summary_large_image","twitter_creator":"@corelanc0d3r","twitter_site":"@corelanc0d3r","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/#article","isPartOf":{"@id":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/"},"author":{"name":"corelanc0d3r","@id":"https:\/\/www.corelan.be\/#\/schema\/person\/3be5542b9b0a0787893db83a5ad68e8f"},"headline":"Delegating AD Admin tasks to non-Admin accounts","datePublished":"2007-09-17T21:25:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/"},"wordCount":2413,"publisher":{"@id":"https:\/\/www.corelan.be\/#organization"},"keywords":["Active Directory"],"articleSection":["Active Directory","Security","Windows Server"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/","url":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/","name":"Delegating AD Admin tasks to non-Admin accounts - Corelan | Exploit Development &amp; Vulnerability Research","isPartOf":{"@id":"https:\/\/www.corelan.be\/#website"},"datePublished":"2007-09-17T21:25:37+00:00","breadcrumb":{"@id":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.corelan.be\/index.php\/2007\/09\/17\/delegating-ad-admin-tasks-to-non-admin-accounts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.corelan.be\/"},{"@type":"ListItem","position":2,"name":"Delegating AD Admin tasks to non-Admin accounts"}]},{"@type":"WebSite","@id":"https:\/\/www.corelan.be\/#website","url":"https:\/\/www.corelan.be\/","name":"Corelan CyberSecurity Research","description":"Corelan publishes in-depth tutorials on exploit development, Windows exploitation, vulnerability research, heap internals, reverse engineering and security tooling used by professionals worldwide.","publisher":{"@id":"https:\/\/www.corelan.be\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.corelan.be\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.corelan.be\/#organization","name":"Corelan CyberSecurity Research","url":"https:\/\/www.corelan.be\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.corelan.be\/#\/schema\/logo\/image\/","url":"https:\/\/www.corelan.be\/wp-content\/uploads\/2026\/03\/corelanlogo2_small-20.png","contentUrl":"https:\/\/www.corelan.be\/wp-content\/uploads\/2026\/03\/corelanlogo2_small-20.png","width":200,"height":200,"caption":"Corelan CyberSecurity Research"},"image":{"@id":"https:\/\/www.corelan.be\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/corelanconsulting","https:\/\/x.com\/corelanc0d3r","https:\/\/x.com\/corelanconsulting","https:\/\/instagram.com\/corelanconsult"]},{"@type":"Person","@id":"https:\/\/www.corelan.be\/#\/schema\/person\/3be5542b9b0a0787893db83a5ad68e8f","name":"corelanc0d3r","pronouns":"he\/him","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","url":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3783bed6acd72d7fa5bb2387d88acbb9a3403e7cada60b2037e1cbb74ad451f9?s=96&d=mm&r=x","caption":"corelanc0d3r"},"description":"Peter Van Eeckhoutte is the founder of Corelan and a globally recognized expert in exploit development and vulnerability research. With over two decades in IT security, he built Corelan into a respected platform for deep technical research, hands-on training, and knowledge sharing. Known for his influential exploit development tutorials, tools, and real-world training, Peter combines a strong research mindset with a passion for education\u2014helping security professionals understand not just how exploits work, but why.","sameAs":["https:\/\/www.corelan-training.com","https:\/\/instagram.com\/corelanc0d3r","https:\/\/www.linkedin.com\/in\/petervaneeckhoutte\/","https:\/\/x.com\/corelanc0d3r"],"url":"https:\/\/www.corelan.be\/index.php\/author\/admin0\/"}]}},"views":24487,"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts\/149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/comments?post=149"}],"version-history":[{"count":0,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/posts\/149\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/media?parent=149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/categories?post=149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.corelan.be\/index.php\/wp-json\/wp\/v2\/tags?post=149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}