That is fine, I have no problem with people
disagreeing with me. It still won't make me prove a point by documenting how it is done. If I gave a step by step or even a high level that
gave people who couldn't figure it out on their own a clue as to how it is done,
I would have to kick my own ass.
As was stated by others, knowing how this is done does not
arm you so that you can do anything more about it. Windows has always had two
areas you needed to secure and had different
assumptions of who should be in those areas. There is the remote access "zone" and the local access
"zone". I am talking from a software angle, not physical. If someone has
physical access and can do what they want, there really isn't any security
that can not be compromised in some way shape or form.
So now you have
remote and local access (or unrestricted remote system access such as c$ or
registery access, etc). If you have remote access, you have to go up
against the fixed function interfaces MS has made available to connect to and
manipulate the machine such as LDAP or kerberos or remote RPC calls, etc.
These have
been built by MS to be as secure as they, at the time they built the interface,
could. This is the most secure you will find things to be and even this can be
compromised. I simply ask you to review the history of all of the various worms
and viruses that have torn through networks infecting machines through
unauthenticated remote access. Think RPC interfaces, web interfaces, SQL
interfaces, etc. Again, making people use the system resources through remote
fixed function access interfaces is going to be the MOST secure you
will see. Honestly, for a long time this only secured you against people who
didn't want to harm you that were smart enough to keep their machines from being
infected by keeping the services that exposed handles to THEIR machines to a
minimum and ran firewalls to block all but the smallest amount of remotely
activated connections and didn't run code that they didn't fully
trust.
If you have local
access (such as TS to the desktop or remote console), you have bypassed a great
deal of the security barriers Microsoft has put into place. You are within at
least the semi-trusted zone and quite honestly in my opinion, the pretty much
fully trusted zone. You know the MS history in keeping the untrusted zone
safe, do you expect the semi-trusted zone to be that much more successful at
repelling people trying to do you harm? Look at your own house as an example,
once someone is past your locked (lol) windows and doors, how much more security
is there in place to make sure people do not get access to sensitive information
or modify your stuff in a way that you do not know? Probably little to none
because it isn't feasible to audit and/or monitor everything in real time.
Further to that, how many automated systems do you have in your house that you
have no understanding of and wouldn't know one way or the other if they
were compromised and being used against you. How do you know someone hasn't
installed a mini-cam in your bathroom and bedroom and not filming your
most intimate moments that you want no one to know about. That is very much
like the state of having local access on a PC. You giving someone access to your
house to put a camera in place and me telling you, hey, they can put a camera in
place does not mean you can detect it or prevent it. Your option, is to disallow
the person from being in a position where they can easily put that camera in
place in to begin with.
How exactly are
you monitoring your group memberships, what interfaces are being used? Most
folks I have seen who implement group monitoring only watch the membership
and not both membership and primary group membership. These are recorded
differently for LDAP interfaces. In that case, someone could act fast
enough and get themselves primary group membership before your LDAP interfaces
ever picked up on the membership change. What about the binaries on your
machine. Having AV software on your machine doesn't mean the machine isn't
compromised. It doesn't look to determine what should be there, it looks at a
fixed set of signatures and tried to determine what shouldn't be there based on
those signatures. Just because it says that some important exe isn't infected
doesn't mean it is what MS produced. Are your favorite plugins and utilities
and CPLs all the way they should be from MS or have they been compromised?
Has someone replaced one or more of your service or driver binaries? How do you
know? This has become more difficult but still isn't 100%, heck it probably
still isn't even 50%. Show me someone who can tell me 100% where every single
file and component on their machine came from and I can almost certainly show
you a liar or at best, a hopeful guesser. I have asked Microsoft for years to
publish a database containing checksum codes and file date/times for every
single file they have ever installed on any machine ever so that you could scan
a machine and determine every file that came from MS (and those that didn't) and
where they are from and whether or not they should be on the machine at the
current patch level and OS. Sadly, the answer is always a look of incredulity
and an admittance that no that isn't even remotely possible. Heck I had someone
in a meeting at a MS Security conference tell me that they couldn't even do that
with NEW files coming out because too many are coming out through too many
different channels...
Again, once you
are on the local machine, you are in the semi-trusted zone. If someone isn't
fully trusted, they shouldn't be there in the first place because once there,
someone stupid or someone intentionally out to get you will eventually hurt you.
The deck is stacked against you.
Right now, we are
lucky in that no one who seriously understands the technology has gone after
domain controllers and domains and forests as a whole. This means a lot of the
possible holes that could be taken advantage of to cause enterprise wide
disruption and destruction are not being attacked or at least not being attacked
in the most advantageous way possible. You need to be thankful for that because
if you can't sit down and work out on your own how someone could attack your
forest and you feel that granting local access to DCs is a responsible thing to
do then you probably don't have anywhere near the skill set and understanding
needed to stop someone who does have the ability to figure it out on their own
or has been taught how to do it.
Something I like
to tell people about with security is simply this.... Just because YOU
don't know how to compromise a given system doesn't mean someone else doesn't
and it can't be compromised. You can never, yes NEVER, prove a system
to be secure, only secure from you. The best you can do is prove a
system to be insecure and hopefully come up with a workaround to prevent that
insecurity from biting you.
If we start
publishing the various ways in which someone could compromise your domain
controllers, your domains, and your forests, all we have done is lower the bar
for the script kiddies and others to start doing it. If someone is
adamant about giving local access to domain controllers or even remotely
allowing them to reconfigure services and/or modify system components there is
nothing that I nor anyone else can do to protect them. Simply step back and let
them play Russian roulette on their own.
In my mind,
anyone who allows people who are not fully trusted DAs local access to DCs
or allows remote modification capabilities of system components is simply
careless and deserving of anything that happens. This could be you or it could
be the manager who forces you to do it after you fought tooth and nail.
Microsoft has given you an untrusted area to place untrusted people into and you
have decided you know more than they do and that it is safe to put untrusted
people into an area that requires trust. At the same time I would both love
to see it and hate to see it if some admin who felt so strongly that they knew
all of the holes and all of the ways to protect themselves from someone with
local access to a DC walked into work one day to find that every single domain
controller in their forest had suddenly ceased to be a domain controller or they
had been locked out of their own forest.
Again, it isn't
just local logon capability, it is anything that can be done to modify the
system components of a DC. Remotely or locally. Locally is just scarier because
the bar is much lower once you are there. Why do you not run email programs as
Domain Admins (and if you do run email programs as domain admins I don't care to
hear about it, good luck) or any other ID with enhanced rights? Why do
people go through the hassle of having multiple IDs, normal business type IDs as
well as enhanced privilege IDs?
I know I don't
know every way a DC, a domain, or a forest can be compromised and/or damaged.
THAT is why I don't allow anyone but fully trusted DAs access to DCs that
I am responsible for. It isn't because I know of several ways in which
it can be compromised. My opinion is such that if I allow a porcupine
in my house instead of keeping it outside, I am at some point probably going to
get poked. The more determined that porcupine is to poke me, the more likely it
is going to happen and the less chance I have to prevent it even though I know
it can and I know what that poke will look and feel like. Knowing after the fact
that I was poked is moot in my book, too little too late.
joe
As I mentioned It's not possible for me to not allow local site
guys to login locally to DC, at least for a small period, till we automate
most of the system maintenance like sysstate backup and AV updates check etc..
And I am not saying that we don't trust them, They have physical access to DC,
so if they want to, they can become the enterprise admin through hacks
available on net. (which we counter by extensive physical security).
What surprised me, is possibility of remote compromise
using normal user local login, which can be extended through
terminal services.
I have extensive auditing enabled. And I am daily monitoring the
group membership changes for enterprise admins, schema admins, domain admins,
server operators, backup operators, etc.
as far as I know, that would be the first thing, unauthorised access
will try to do, i.e. elevate their rights within system.
Is this sufficient? is there any other attack symptom, I should be
monitoring DAILY?
I have already raised the concern with our ADS migration PM, and to get
more info from our TAM.
But, if I just ask him, what is the possibility of AD compromise in case of
normal user local login onto DC? I guess TAM is likely to play down the
threat.
I understand, experts' concern for not even talking about it in forum,
in interests of community,
as we don't know the intent of every subscriber.
but I do feel, "this is a big issue, easily exploitable with
little workaround to thwart it."
You know, guys this has increased the priority for me to automate the
maintenance stuff on urgency and remove the rights for local login on DCs. It
will be hard for me to explain to them, why I am doing it, as I have very
little facts. :(
On 9/23/05, ASB
<[EMAIL PROTECTED]> wrote:
>>And knowing it, I can always take extra precautions.
The knowing it consists of "don't do it, because you can't secure
it"
There are no extra precautions to take. Certainly, you can increase
your auditing, but you could do that now without knowing anything
else.
>>basically, 25% more prepared and secure against this type of
attack is better than 0%.
The more people that know, the higher the potential of
attack. And, as folks have pointed out, since there are no viable
workarounds, it doesn't help anyone to have the number of potential attackers
increased.
Call your TAM and see if he or she will provide enough details for you to
feel comfortable.
-ASB
FAST, CHEAP, SECURE: Pick Any TWO
On 9/23/05, Kamlesh
Parmar <[EMAIL PROTECTED] >
wrote:
I have to disagree a bit here...
Certainly, obscuring of information is not the way to
feel secure.
If I don't know, how it is done, then how do I know, that I will be
able to detect it, and trace it.
And knowing it, I can always take
extra precautions. Which I think, better than not knowing it at all.
basically, 25% more prepared and secure against this type of attack is
better than 0%. and certainly it helps calibrate how much paranoid I have to
be. :-)
I would like to know, how it is done, as our team is currently
migrating some good number of domains to single domain. And we are
going to give local guys rights to logon to DC for some system
maintenance purposes, till final single domain is cleaned up and we revert
back to core team for day-to-day maintenance.
So I am very much interested in knowing it.
On 9/23/05, joe
<[EMAIL PROTECTED]> wrote:
The
docs are wrong. Many of us have been hounding MS on this for years. They
really started straightening out docs with K3. Some of the older 2K docs
still suggest this security boundary at the domain. It really came to a
head when Lucent put out a paper on this and it started getting quoted in
the newsgroups and some of us just flamed the crap out of it.
No one
here or anywhere should really publish how to exploit rights on a DC to
take over a forest. The answer is pretty self-evident if someone
understands the underpinnings and processes used in AD and since we
can't fully protect against it, it is better left undocumented.
If there was a guaranteed safe way to protect ourselves, then we could
publish that workaround and some time later publish the issue.
joe
I thought that in
ad domains are considered security boundaries. In the cert exams, namely
the 70-219, they are considered as such. Also, how would a domain admin of
a child domain elevate his privileges?
Dan
Even as a domain admin of a Child domain they will
still be able to munge your forest or elevate their priviledges. The
security boundary in AD is at the forest, not the domain.
On 9/22/05, Gideon Ashcraft <
[EMAIL PROTECTED]> wrote:
The only thing to do is to make him an admin of
that site, or better yet make that site a child domain and make him a
domain admin of that child domain. I know from experience that using a DC
as anything but a DC is a freakin pain in the ass, my predecessor set a DC
up as a print/file server and another as a SQL server (finally able to
demote that one now, soon hopefully). But my citrix profiles are on the
domain controller, and after months of trying to set delegation up
properly in AD and setting up permissions in the appropriate folders on
the DC, the only way I was able to get my Helpdesk admin set up to create
accounts with my scripts so that I didn't have to do it was to make him a
domain admin. My company is too damn cheap to get me another server to put
the citrix profiles somewhere else. Oh yeah, and its an app server for
network install of office (can you feel my pain).
So, if there is only one server in the site
and its a DC, the only way to get him to do anything is to make him a
domain admin (make it a child domain so he can't climb up the tree)
Screen Actors
Guild
ct: RE: [ActiveDir] Domain
Controller Security
Look through the
archives.
The short answer
is... "Just don't do it". You can't possibly secure this regardless of
what anyone says. If someone says it can be made safe, stop asking them
technical questions about Domain Controllers and Active Directory.
Either you trust
the person or you don't. If you don't trust the person, then don't put the
person in a position to show you the meaning of screwed.
From: [EMAIL PROTECTED] [mailto:
[EMAIL PROTECTED]] On Behalf Of van Donk,
Fred
Sent: Tuesday,
September 20, 2005 4:52 PM
To: [email protected]
Subject: [ActiveDir] Domain
Controller Security
I have a contractor in a
remote site. There is only 1 server in that site which is a
DC.
He needs to administer that
server.
-Make file/share
permissions
-Change user passwords in the
User OU for that site.
He is not allowed to log on to
any other server is the domain.
When I make him a "Server
Operator" he can logon to any server in the
domain.
Any idea on how to lock him
down to that one server and then how to lock him down on that one OU where
he should only be allowed to change the passwords of the users.
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Fortune and Love befriend
the bold"
~~~~~~~~~~~~~~~~~~~~~~~~~~~