Beginner Question.

Hello all,

I have been given the task of writing a file filter driver to detect
program launches. When it detects a program starting it will then
communicate with a user mode app to determine if the app is allowed to be
run or not. This will be relayed to the driver which will then either
allow the IRP to continue on it’s way or not.

I am using the minispy example from the IFS kit to develop a prototype
driver. I have successfully replaced the user mode app with one of my own,
but this is the first driver of any type I have been involved in writing.

My Questions are:

  1. I have tried using FltQueueDeferredIoWorkItem in the
    PreOperationCallback function without success, I just get a blue screen of
    death. Is this an appropriate mechanism to use for my pending objective or
    is there a better approach.

  2. Can I determine if the request comming into my PreOperationCallback
    function is related to an exe starting or is this not possible.

Thanks for any help you can provide on the above points.

Dave

It is extremely hard using IRP’s to determine an executable is starting. I
would recomend use PsSetLoadImageNotify to determine a process is loading a
particular executable.

Note: that as has been disucussed many times, this approach as a protection
scheme is incredibly easy to overcome. If you use the pathname, to defeat
things just change the path. If you hash the executable, just modify the
resource section, etc.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Remove StopSpam from the email to reply

“Dave Wilkes” wrote in message
news:xxxxx@ntfsd…
> Hello all,
>
> I have been given the task of writing a file filter driver to detect
> program launches. When it detects a program starting it will then
> communicate with a user mode app to determine if the app is allowed to be
> run or not. This will be relayed to the driver which will then either
> allow the IRP to continue on it’s way or not.
>
> I am using the minispy example from the IFS kit to develop a prototype
> driver. I have successfully replaced the user mode app with one of my own,
> but this is the first driver of any type I have been involved in writing.
>
> My Questions are:
>
> 1) I have tried using FltQueueDeferredIoWorkItem in the
> PreOperationCallback function without success, I just get a blue screen of
> death. Is this an appropriate mechanism to use for my pending objective or
> is there a better approach.
>
> 2) Can I determine if the request comming into my PreOperationCallback
> function is related to an exe starting or is this not possible.
>
> Thanks for any help you can provide on the above points.
>
> Dave
>
>

Program startup (or DLL load) is not an IRP. It is NtCreateSectio
(SEC_IMAGE), and yes, no ways but hooking to intercept this.

Checking the EXECUTE desired access will give you lots of false positives
(from Explorer IIRC).

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: “Dave Wilkes”
To: “Windows File Systems Devs Interest List”
Sent: Friday, July 22, 2005 5:26 PM
Subject: [ntfsd] Beginner Question.

> Hello all,
>
> I have been given the task of writing a file filter driver to detect
> program launches. When it detects a program starting it will then
> communicate with a user mode app to determine if the app is allowed to be
> run or not. This will be relayed to the driver which will then either
> allow the IRP to continue on it’s way or not.
>
> I am using the minispy example from the IFS kit to develop a prototype
> driver. I have successfully replaced the user mode app with one of my own,
> but this is the first driver of any type I have been involved in writing.
>
> My Questions are:
>
> 1) I have tried using FltQueueDeferredIoWorkItem in the
> PreOperationCallback function without success, I just get a blue screen of
> death. Is this an appropriate mechanism to use for my pending objective or
> is there a better approach.
>
> 2) Can I determine if the request comming into my PreOperationCallback
> function is related to an exe starting or is this not possible.
>
> Thanks for any help you can provide on the above points.
>
> Dave
>
>
> —
> Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17
>
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

Greetings mortal, Don!
You wrote on Fri, 22 Jul 2005 10:04:21 -0400:

DB> It is extremely hard using IRP’s to determine an executable is
DB> starting. I would recomend use PsSetLoadImageNotify to determine a
DB> process is loading a particular executable.

Ok. And how do you deny execution? Close the thread? No…

DB> Note: that as has been disucussed many times, this approach as a
DB> protection scheme is incredibly easy to overcome. If you use the
DB> pathname, to defeat things just change the path. If you hash the
DB> executable, just modify the resource section, etc.

It’s depends. The logic may be as “allowing to do something” and as “deny to do
something”. If your policy is allowing execution binary only with one hash (calculated and
loaded as policy) - modifying a binary is useless.

Eugene.

Greetings mortal, Dave!
You wrote on Fri, 22 Jul 2005 14:26:56 +0100 (BST):

DW> 2) Can I determine if the request comming into my
DW> PreOperationCallback function is related to an exe starting or is
DW> this not possible.

The best way is a check FILE_EXECUTE|SYNCHRONIZE (and some similar) desired access in
post-create op. To deny execution you should call IoCancelFileOpen…

PS: Some programms will generate a false requests to open files for supposedly
“execution”. But who knows? Attempt was maid and you must handle it…

Eugene.

> The best way is a check FILE_EXECUTE|SYNCHRONIZE (and some similar)
desired access in

post-create op

This will cause a lot of false positives.

PS: Some programms will generate a false requests to open files for
supposedly
“execution”.

Yes, for instance, Explorer.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

Greetings mortal, Maxim!
You wrote on Fri, 29 Jul 2005 23:07:34 +0400:

> The best way is a check FILE_EXECUTE|SYNCHRONIZE (and some similar)
MSS> desired access in
>> post-create op

MSS> This will cause a lot of false positives.

> PS: Some programms will generate a false requests to open files for
>> supposedly “execution”.

MSS> Yes, for instance, Explorer.

I know it very well. In the given situation it is better to catch superfluous, than
something allow to pass.

Eugene.

> I know it very well. In the given situation it is better to catch

superfluous, than something allow to pass.

I dare to disagree. You must allow EXACTLY what could
be allowed and deny ONLY this which could be denied.
If you don’t do it EXACTLY, then the false positives
will cause that files that normally can be opened, will be denied to open.
Then, Explorer starts to show tons of strange error messages about
“This and that cannot be done” and whole shell will behave very strangely.

If I were you, I would be very prudent before making such
assumptions, because later, when the driver will go to beta state,
might be very difficult to change the logic without rewriting it.

L.

Greetings mortal, Ladislav!
You wrote on Mon, 1 Aug 2005 10:00:47 +0200:

> I know it very well. In the given situation it is better to catch
>> superfluous, than something allow to pass.

LZ> I dare to disagree. You must allow EXACTLY what could be allowed and
LZ> deny ONLY this which could be denied.

:slight_smile: When you deal with protection profile this phrase can sound differently. “allow EXACTLY
what could be allowed and
deny all other”…

LZ> If you don’t do it EXACTLY, then the false positives will cause
LZ> that files that normally can be opened, will be denied to open.
LZ> Then, Explorer starts to show tons of strange error messages about
LZ> “This and that cannot be done” and whole shell will behave very
LZ> strangely.

Whom does it worry? Microsoft? How many once a month here is posted crying about the Word
or the Excel? How many developers from Microsoft use your program (or Mark Russinovich)?
It seems to me developers of a OS kernel and developers of user mode applications do not
hear each other in Microsoft…

LZ> If I were you, I would be very prudent before making such
LZ> assumptions, because later, when the driver will go to beta state,
LZ> might be very difficult to change the logic without rewriting it.

When the legal way has a limitation what we can make? Big thanks to “Explorer”, and unless
it is the only shell program? What for it opens a file for “execution” when you look its
properties? Whether is better in the given situation to demand elimination of undesirable
opening from Microsoft?

PS: A good event log is a big help to the security administrator.

Eugene.

> Whom does it worry? Microsoft? How many once a month here is posted crying

about the Word or the Excel? How many developers from Microsoft use your
program (or Mark Russinovich)? It seems to me developers of a OS kernel
and developers of user mode applications do not hear each other in
Microsoft…

Well, although I don’t understand your arguments fully,
and I’m not sure what this has to do with Microsoft or Mark
Russinovich :-(, but if you are developing your product because you
want to sell it, you will have to think about what will customers
say. And believe me, the customers will always say that is it YOUR
software which makes problems and must be fixed.

When the legal way has a limitation what we can make?
Big thanks to “Explorer”, and unless it is the only shell program? What
for it opens a file for “execution”
when you look its

I have some experiences from implementing a filter
driver and know that if you will create some incompatible behavior
in your filter, sooner or later, the difference will appear somewhere.
You cannot tell the customer that “Explorer opens file with
GENERIC_EXECUTE when it needs to query attributes only”,
(s)he really doesn’t care. An application might specify more
access rights than it really needs, if it does not break
any security settings.

From your words, I sense that you are upset
(hopefully not to me :-), but this is way how things
usually work in the world of file system filters.

Sorry that I cannot tell you something what you want to hear.
Many times, I have found a situation when a software
made something that I considered dirty, but until it works
with the pure OS, it must work with your software too,
otherwise you will have problems.

Whether is better in the given situation to demand elimination of
undesirable opening from Microsoft?

Even if this happened, another software might do the same thing
(and their developers will not hear any complaints from you that
they are doing something wrong).

L.

Sorry, I’ve been away from my computer for a week, so I am trying to catch
up. I am responding to this post, but have read the follow on postings, so
now I am really confused!

  1. Are you attempting to kill the process, or deny access to some
    resources?

  2. You cannot restrict things to running one binary, in fact you will
    find it hard to get a list of binaries that you need to have a working
    system!

  3. You have claimed that messing things up with false positives will
    not hurt things. I’ve had a firm contact me to be an expert witness (I
    declined in this case) since they wanted to sue someone who’s driver
    contunually messed up their programm, and after repeated requests to fix the
    driver, are considering the legal route!


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Remove StopSpam from the email to reply

“Eugene Lomovsky” wrote in message news:xxxxx@ntfsd…
> Greetings mortal, Don!
> You wrote on Fri, 22 Jul 2005 10:04:21 -0400:
>
> DB> It is extremely hard using IRP’s to determine an executable is
> DB> starting. I would recomend use PsSetLoadImageNotify to determine a
> DB> process is loading a particular executable.
>
> Ok. And how do you deny execution? Close the thread? No…
>
> DB> Note: that as has been disucussed many times, this approach as a
> DB> protection scheme is incredibly easy to overcome. If you use the
> DB> pathname, to defeat things just change the path. If you hash the
> DB> executable, just modify the resource section, etc.
>
> It’s depends. The logic may be as “allowing to do something” and as “deny
> to do something”. If your policy is allowing execution binary only with
> one hash (calculated and loaded as policy) - modifying a binary is
> useless.
>
> Eugene.
>
>

Greetings mortal, Ladislav!
You wrote on Mon, 1 Aug 2005 11:51:10 +0200:

> Whom does it worry? Microsoft? How many once a month here is posted
>> crying about the Word or the Excel? How many developers from
>> Microsoft use your program (or Mark Russinovich)? It seems to me
>> developers of a OS kernel and developers of user mode applications
>> do not hear each other in
>> Microsoft…

LZ> Well, although I don’t understand your arguments fully, and I’m not
LZ> sure what this has to do with Microsoft or Mark
LZ> Russinovich :-(, but if you are developing your product because you
LZ> want to sell it, you will have to think about what will customers
LZ> say. And believe me, the customers will always say that is it YOUR
LZ> software which makes problems and must be fixed.

I meant FileSpy and FileMon…

The customers or the users? :wink: The customers want “to allow execution only what could be
allowed and deny rest of all”… When we are speak about security and not simply security
policy rather restricted enviroment, the customers are ready to endure some “features”
because risk of security breach (leak, disclosure etc) is tooo high… The customers of
such software are not a home users… The users are victims.

> When the legal way has a limitation what we can make?
>> Big thanks to “Explorer”, and unless it is the only shell program?
>> What for it opens a file for “execution”
>> when you look its

LZ> I have some experiences from implementing a filter driver and know
LZ> that if you will create some incompatible behavior in your filter,
LZ> sooner or later, the difference will appear somewhere.
LZ> You cannot tell the customer that “Explorer opens file with
LZ> GENERIC_EXECUTE when it needs to query attributes only”, (s)he
LZ> really doesn’t care. An application might specify more access rights
LZ> than it really needs, if it does not break any security settings.

LZ> From your words, I sense that you are upset (hopefully not to me
LZ> :-), but this is way how things usually work in the world of file
LZ> system filters.

Ok, ok. I have some experiences from implementing a filter driver too (from NT 4.0 up
today). I fully understand you. And I want to make a life for end-user easier. I only want
to say if in Microsoft would give more attention to refactoring, our life would be easier
(or harder if many bugs will be produced, I hope don’t).

LZ> Sorry that I cannot tell you something what you want to hear.
LZ> Many times, I have found a situation when a software made something
LZ> that I considered dirty, but until it works with the pure OS, it
LZ> must work with your software too, otherwise you will have problems.

I only want to say (in previous msg) there are exist other shells which not generate to
many requests. What for Explorer generates it? May I disable its? No.

> Whether is better in the given situation to demand elimination of
>> undesirable opening from Microsoft?

LZ> Even if this happened, another software might do the same thing (and
LZ> their developers will not hear any complaints from you that they are
LZ> doing something wrong).

So, what about pure OS? :?

Eugene.

Greetings mortal, Don!
You wrote on Mon, 1 Aug 2005 08:34:45 -0400:

DB> Sorry, I’ve been away from my computer for a week, so I am trying to
DB> catch up. I am responding to this post, but have read the follow
DB> on postings, so now I am really confused!

DB> 1. Are you attempting to kill the process, or deny access to
DB> some resources?

Read the original post carefully. How to deny execution?

DB> 2. You cannot restrict things to running one binary, in fact
DB> you will find it hard to get a list of binaries that you need to
DB> have a working system!

Indeed. But we are speak about kernel not GUI/Config part.

DB> 3. You have claimed that messing things up with false positives
DB> will not hurt things. I’ve had a firm contact me to be an expert
DB> witness (I declined in this case) since they wanted to sue someone
DB> who’s driver contunually messed up their programm, and after
DB> repeated requests to fix the driver, are considering the legal
DB> route!

I did not approve that it is enough. I have only shown a direction. It is a hard work to
achieve goal and not to mess OS but it is paid, whether not so? :wink:

Eugene.

Ok,

For most calls to the callback from PsSetImageLoadNotifyRoutine, are
made in the context of the initial thread of the process. It is messy but
terminating that thread will kill the process before it can do anything.

It is claimed, though I have not encountered it that there are cases
where you are in another process (or system) context. A safer way than
above is to have a service that can open the process and call
TerminateProcess on it. The service calls into the driver with a number of
IOCTL’s that pend till a process you wish to terminate appears, then you
complete them in the callback from PsSetImageLoadNotifyRoutine with the
process ID returned as part of the data.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Remove StopSpam from the email to reply

“Eugene Lomovsky” wrote in message news:xxxxx@ntfsd…
> Greetings mortal, Don!
> You wrote on Mon, 1 Aug 2005 08:34:45 -0400:
>
> DB> Sorry, I’ve been away from my computer for a week, so I am trying to
> DB> catch up. I am responding to this post, but have read the follow
> DB> on postings, so now I am really confused!
>
> DB> 1. Are you attempting to kill the process, or deny access to
> DB> some resources?
>
> Read the original post carefully. How to deny execution?
>
> DB> 2. You cannot restrict things to running one binary, in fact
> DB> you will find it hard to get a list of binaries that you need to
> DB> have a working system!
>
> Indeed. But we are speak about kernel not GUI/Config part.
>
> DB> 3. You have claimed that messing things up with false positives
> DB> will not hurt things. I’ve had a firm contact me to be an expert
> DB> witness (I declined in this case) since they wanted to sue someone
> DB> who’s driver contunually messed up their programm, and after
> DB> repeated requests to fix the driver, are considering the legal
> DB> route!
>
> I did not approve that it is enough. I have only shown a direction. It is
> a hard work to achieve goal and not to mess OS but it is paid, whether not
> so? :wink:
>
> Eugene.
>
>

Greetings mortal, Don!
You wrote on Mon, 1 Aug 2005 10:52:22 -0400:

DB> Ok,

DB> For most calls to the callback from
DB> PsSetImageLoadNotifyRoutine, are made in the context of the initial
DB> thread of the process. It is messy but terminating that thread
DB> will kill the process before it can do anything.

DB> It is claimed, though I have not encountered it that there are
DB> cases where you are in another process (or system) context. A
DB> safer way than above is to have a service that can open the process
DB> and call
DB> TerminateProcess on it. The service calls into the driver with a
DB> number of
DB> IOCTL’s that pend till a process you wish to terminate appears, then
DB> you complete them in the callback from PsSetImageLoadNotifyRoutine
DB> with the process ID returned as part of the data.

What’s about .cmd, .bat, .pif, .dll (.fon and yet .com from VDM)? I didn’t experiment with
this function (you will see later why). Are the all threads have THREAD_TERMINATE access?

Don’t forget about PsSetImageLoadNotifyRoutine’s “The system registers up to eight such
load-image callbacks.” ONLY 8! What do you do when PsSetImageLoadNotifyRoutine failed?
BSOD? I can’t rely on a case and this function is a toy for me at present time… :expressionless:

Eugene.

Well I guess you are chasing a fools errand then. You will not be able to
do this for any commercial product. I know it has been done once on a
custom product (lock down the exact service pack, hotfixes etc, and be
willing to go way beyond the acceptable norm). Detecting something is being
loaded to run, with all the possible command shells, interpreters, and
tricks with DLL’s is near the edge of being impossible (I would say it is
impossible, but that would just cause arguments).

It is interesting to note you listed this as a beginners question. The
areas you are poking around in are as far from something a beginner should
be dealing with as I can imagine.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Remove StopSpam from the email to reply

“Eugene Lomovsky” wrote in message news:xxxxx@ntfsd…
> Greetings mortal, Don!
> You wrote on Mon, 1 Aug 2005 10:52:22 -0400:
>
> DB> Ok,
>
> DB> For most calls to the callback from
> DB> PsSetImageLoadNotifyRoutine, are made in the context of the initial
> DB> thread of the process. It is messy but terminating that thread
> DB> will kill the process before it can do anything.
>
> DB> It is claimed, though I have not encountered it that there are
> DB> cases where you are in another process (or system) context. A
> DB> safer way than above is to have a service that can open the process
> DB> and call
> DB> TerminateProcess on it. The service calls into the driver with a
> DB> number of
> DB> IOCTL’s that pend till a process you wish to terminate appears, then
> DB> you complete them in the callback from PsSetImageLoadNotifyRoutine
> DB> with the process ID returned as part of the data.
>
> What’s about .cmd, .bat, .pif, .dll (.fon and yet .com from VDM)? I didn’t
> experiment with this function (you will see later why). Are the all
> threads have THREAD_TERMINATE access?
>
> Don’t forget about PsSetImageLoadNotifyRoutine’s “The system registers up
> to eight such load-image callbacks.” ONLY 8! What do you do when
> PsSetImageLoadNotifyRoutine failed? BSOD? I can’t rely on a case and this
> function is a toy for me at present time… :expressionless:
>
> Eugene.
>
>

Greetings mortal, Don!
You wrote on Mon, 1 Aug 2005 12:57:26 -0400:

DB> Well I guess you are chasing a fools errand then. You will not be
DB> able to do this for any commercial product. I know it has been
DB> done once on a custom product (lock down the exact service pack,
DB> hotfixes etc, and be willing to go way beyond the acceptable norm).
DB> Detecting something is being loaded to run, with all the possible
DB> command shells, interpreters, and tricks with DLL’s is near the
DB> edge of being impossible (I would say it is impossible, but that
DB> would just cause arguments).

It isn’t a fool protection. Try to read something about top secret environment, national
security requirements, software certification etc. So has formed here in our country many
state structures work on a platform from Microsoft. And as I already spoke, there are
requirements which demand much more, than allows OS and, by the way, solutions are
successfully and maintained here already more than 7 years. If such tasks seem to you
unreliazable it is not necessary to speak it for all.

It isn’t one driver. It is a complex system with remote administration, with logs
gathering etc… It is OS expansion from the direction of management and security…

DB> It is interesting to note you listed this as a beginners question.
DB> The areas you are poking around in are as far from something a
DB> beginner should be dealing with as I can imagine.

The initial question is very close to that I have made. What for to the beginner to step
on the same rake? May be I see too far, but my solution is more flexible, multi-purpose…
May be for him will enough to use callbacks, but when him will ask about something more,
he should begin all anew.

PS: sorry for my english

Eugene.

As I say, I did something similar once for a company that worked for
intelligence agencies in the US. The problem was that any method that
worked, could not have a hot fix or a service pack applied without breaking
the software.

This was a huge project that never got finished. We are talking 10+ man
years of effort, with some of the people considered some of the best
security types out there. It is not a fools errand to want protection, it
is definitely a fools errand to try to create a security layer as you
describe that will work for multiple revisions and hotfixes of Windows.


Don Burn (MVP, Windows DDK)
Windows 2k/XP/2k3 Filesystem and Driver Consulting
Remove StopSpam from the email to reply

“Eugene Lomovsky” wrote in message news:xxxxx@ntfsd…
> Greetings mortal, Don!
> You wrote on Mon, 1 Aug 2005 12:57:26 -0400:
>
> DB> Well I guess you are chasing a fools errand then. You will not be
> DB> able to do this for any commercial product. I know it has been
> DB> done once on a custom product (lock down the exact service pack,
> DB> hotfixes etc, and be willing to go way beyond the acceptable norm).
> DB> Detecting something is being loaded to run, with all the possible
> DB> command shells, interpreters, and tricks with DLL’s is near the
> DB> edge of being impossible (I would say it is impossible, but that
> DB> would just cause arguments).
>
> It isn’t a fool protection. Try to read something about top secret
> environment, national security requirements, software certification etc.
> So has formed here in our country many state structures work on a platform
> from Microsoft. And as I already spoke, there are requirements which
> demand much more, than allows OS and, by the way, solutions are
> successfully and maintained here already more than 7 years. If such tasks
> seem to you unreliazable it is not necessary to speak it for all.
>
> It isn’t one driver. It is a complex system with remote administration,
> with logs gathering etc… It is OS expansion from the direction of
> management and security…
>
> DB> It is interesting to note you listed this as a beginners question.
> DB> The areas you are poking around in are as far from something a
> DB> beginner should be dealing with as I can imagine.
>
> The initial question is very close to that I have made. What for to the
> beginner to step on the same rake? May be I see too far, but my solution
> is more flexible, multi-purpose… May be for him will enough to use
> callbacks, but when him will ask about something more, he should begin all
> anew.
>
> PS: sorry for my english
>
> Eugene.
>
>

I think your comment about this being “more than the OS allows” is
interesting. In my experience, very little of the rather rich security
infrastructure within Windows is actually utilized. Instead, what
people seek to do is add a *different* layer of security over the
existing system not because of features lacking in the underlying OS,
but in the need to allow poorly written programs (need I pick on the
Service Control Manager again?) function “properly”.

If you don’t want people to execute unauthorized programs, I can easily
think of many ways to achieve this that does not rely upon analyzing the
name of the binary. For example, you could restrict execution privilege
to only authorized (locked down) directories. THAT’s relatively easy to
implement with a simple file system filter + NTFS ACLs.

The Windows OS security model is actually well-grounded in OS security
principles (discretionary access control, no object exposure,
authorization and identification, etc.) The use of that security model
is atrocious (creating all-powerful users and groups and installing with
those privileges out-of-the-box) because most OS customers don’t really
care about security at this level. Microsoft clearly has indicated over
and over that their concern is the volume market, be that desktop or
server. I can’t blame them - they have an obligation to maximize their
profit for the benefit of their shareholders. Fighting malware,
viruses, or other “authorized” security threats is an attempt at
allowing people to enjoy the freedom of lax security, while protecting
them from their own ignorance.

You CAN harden a Windows box. But when you are done a surprisingly
large number of things just don’t work right anymore. Be it the Service
Control Manager (because it hard codes the “Administrators” group in its
ACL and in keeping with good hardening you’ve gutted all the well known
groups on your system) or the applications that insist on accessing
files for write that should only be read, or people who are too used to
just downloading and installing one more little doo-dad so they can look
at another malicious web page, etc.

Security - real security - is tough to live with, largely because the
ultimate threat to security on the box are the users. Damn them but
they want to use it to “get work done”.

Now excuse me while I go install another ActiveX control…

Regards,

Tony

Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Eugene Lomovsky
Sent: Tuesday, August 02, 2005 4:46 AM
To: ntfsd redirect
Subject: Re:[ntfsd] Beginner Question.

Greetings mortal, Don!
You wrote on Mon, 1 Aug 2005 12:57:26 -0400:

DB> Well I guess you are chasing a fools errand then. You will not be
DB> able to do this for any commercial product. I know it has been
DB> done once on a custom product (lock down the exact service pack,
DB> hotfixes etc, and be willing to go way beyond the acceptable
norm).
DB> Detecting something is being loaded to run, with all the possible
DB> command shells, interpreters, and tricks with DLL’s is near the
DB> edge of being impossible (I would say it is impossible, but that
DB> would just cause arguments).

It isn’t a fool protection. Try to read something about top secret
environment, national
security requirements, software certification etc. So has formed here in
our country many
state structures work on a platform from Microsoft. And as I already
spoke, there are
requirements which demand much more, than allows OS and, by the way,
solutions are
successfully and maintained here already more than 7 years. If such
tasks seem to you
unreliazable it is not necessary to speak it for all.

It isn’t one driver. It is a complex system with remote administration,
with logs
gathering etc… It is OS expansion from the direction of management and
security…

DB> It is interesting to note you listed this as a beginners question.
DB> The areas you are poking around in are as far from something a
DB> beginner should be dealing with as I can imagine.

The initial question is very close to that I have made. What for to the
beginner to step
on the same rake? May be I see too far, but my solution is more
flexible, multi-purpose…
May be for him will enough to use callbacks, but when him will ask about
something more,
he should begin all anew.

PS: sorry for my english

Eugene.


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as: xxxxx@osr.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

Greetings, Tony!
You wrote on Tue, 2 Aug 2005 11:01:17 -0400:

TM> I think your comment about this being “more than the OS allows” is
TM> interesting. In my experience, very little of the rather rich
TM> security infrastructure within Windows is actually utilized.
TM> Instead, what people seek to do is add a *different* layer of
TM> security over the existing system not because of features lacking in
TM> the underlying OS, but in the need to allow poorly written programs
TM> (need I pick on the
TM> Service Control Manager again?) function “properly”.

For example, it is B1 level (not in full strength, of course, but something like this with
national “features”).

TM> If you don’t want people to execute unauthorized programs, I can
TM> easily think of many ways to achieve this that does not rely upon
TM> analyzing the name of the binary. For example, you could restrict
TM> execution privilege to only authorized (locked down) directories.
TM> THAT’s relatively easy to implement with a simple file system filter
TM> + NTFS ACLs.

Yes, of course. But… First of all, it is a very very hard to manage in real life, when
computers distributed in different cities (as stand alone, not in domain) and the task is
to allow to execute exactly what could be allowed and to forbid everything else. Then, in
Windows we can’t distinguish administrator from security administrator. It is a serious
problem for management. And third, there are requirements from certification
organizations.

TM> You CAN harden a Windows box. But when you are done a surprisingly
TM> large number of things just don’t work right anymore. Be it the

Yes, of course. But the devil is not so black as he is painted. :slight_smile:

TM> Service
TM> Control Manager (because it hard codes the “Administrators” group in
TM> its
TM> ACL and in keeping with good hardening you’ve gutted all the well
TM> known groups on your system) or the applications that insist on
TM> accessing files for write that should only be read, or people who
TM> are too used to just downloading and installing one more little
TM> doo-dad so they can look at another malicious web page, etc.

Once again. It is a special environment, no internet, computers is sealed etc…

TM> Security - real security - is tough to live with, largely because
TM> the ultimate threat to security on the box are the users. Damn them
TM> but they want to use it to “get work done”.

Internal attacks… Most dangerous…

TM> Now excuse me while I go install another ActiveX control…

:slight_smile: Glad to see your opinion.

Eugene.