sans top 20 has lost its flavor…

Yes, SANS has released their latest top 20 Internet Security Risks report. And Dark Reading points to it.

Tim Wilson at Dark Reading opens up: “There are two major problems with the security of computers: the people who use them and the people who write software for them.”. You don’t say?!? I think that covers everyone except my grandmother…

Ok, so Tim’s article gets better and I like his pointing out that home-grown apps are big threats, which will make people think a bit more about open source and other, well, home-grown apps. Paying for software every cycle sucks, but is the cost of the software worth the possibly improved security and support? Good question.

My biggest complaint about the SANS Top 20 list these days? It’s too nebulous. Let’s see…web browser, email clients, media players, and office software. Did they leave anything out?!?! Yes, IM services…oh wait, they got that too.

Windows, *nix, and Mac. Uhh..again, did they leave anything out? Well, yes, they may have missed something, but the catch-all Zero-Days kinda covers the ass end of the list.

Yeah, thanks for this wonderfully nebulous list that really is far less actionable than it used to be. Sure, it illustrates our security risk landscape fairly well, but it is definitely targeting managers and less involved/informed people these days.Rather than being the top 20 risks, it is basically an all-encompassing “here’s all the risks you need to worry about,” list for CSOs and journalists to care about.

Fine, there is at least one thing missing. Wireless issues, both with regards to 802.11 devices and Bluetooth. Sure, they mention it twice, once in Unauthorized Devices and again in Instant Messaging, but that’s just lame and really does downplay the issues. Sure, you can’t have someone in Russia sit down and pwn every Starbucks wireless user in 60 seconds, but the problem still exists on a microscopic level. Want to fly under the radar or target an exec because you’re being paid by competition to do so… Hell, it would have been trendy to include this with the simple mention of the alleged intrusion vector for the TJX breach.

Alas, I still like the list because it gives us something to point to when management thinks the world is peachy-keen and full of rainbows in our office. Still, I’d rather this list were still interesting and relevent to me, rather than trying to be a “list” that tries to capture everything. Maybe it’s just a sign of a maturing industry and a much wider interested audience that needs to be included…

deep thoughts by jack infosec

It’s that time of year. We can sit back on cold near-winter nights in front of a fire with a pipe in hand, rocking back in a comfy chair and muse. Yup, it’s a time this week for discussions in information security!

Hoff has been talking about valuing information security, always a passionate subject for everyone, and one without a clear (or even muddy!) answer. He’s also talking about security and disruptive innovation. Good stuff to read! Oh, and while you read what he has to say, try to convince him to change back to “Rational Security.” I tried to register rationalsurvivability.typepad.com but wasn’t willing to pay the initial fee…doh! There isn’t even a category on his site for surviability! Fad! Fad! I predict he’ll quietly revert back after the start of the year. 😉

It really felt like Bejtlich was gearing up for some revelatory posts, and he pushed one out in talking about how controls are not the solution. Instead, look at the outputs.

And Mogull had a nice comment in a recent post of his, “While the encryption market isn’t nearly as big as most of the world wants you to believe…”. I agree. I think many are waiting for this “market” to turn into the inevitable fea…no, it won’t be a “feature,” it’ll eventually be standard and just accepted. For now, HDE/FDE is still difficult to manage across an enterprise, wrought with frustrations, and managers would rather see less mobile devices anyway. Why protect the laptops we really dislike deploying? Just deploy less! And so on…

morrill’s top ten things in info security to do now

Dan Morrill posted the “top ten information security issues to tackle now” which I find extremely cool. I’ve jotted some reactions below.

Get an Evangelist– I just wanted to highlight this option as an alternative to the misguided efforts to “make IT more business savvy” and the vice-versa option. A liaison is truly what is needed. You don’t tell Accountants to be able to throw down a sales pitch to a client, nor ask Sales to troubleshoot their own PCs (oh christ do they try though!). You get people to interface across the boundaries, not try to get everyone able to do everything. Sure, IT people do need to come out of their shells a bit and yes, be a bit more business savvy, but lets not turn that into the savior of “IT vs business side” heartaches like I’ve seen attempted.

Train IT– YES! And remember that training can also include self-training. Give us some time during our days to properly self-train on new technology. This can save a new hire or formal (spendy) training. Most of us are in IT for various reasons, the most common I bet would be our joy at solving problems and puzzles. Yes, we also do get depressed when we can’t tackle the new VOIP system properly because we just don’t have the free time in our schedules…

Develop a defense in depth program for the company…Listen to your IT department; they know where the bodies are buried.– Amen! Talk to IT, and have them list their pet projects or things that just have never gotten done but they’d like to get done. I bet a lot of those projects are solid projects that would fit into a defense in depth strategy. Keep that master list and start ranking and evaluating the options. Then start knocking some of them away! Sure, the list may be a depressing list at times, but we all need roadmaps and IT workers have their fingers down on the pulse of the company’s technology and information.

more reasons why businesses are insecure

Anton Chuvakin linked me over to an article about 7 reasons businesses are insecure. Check the reasons, as they are good ones.

I wanted to add a couple more, however.

8. Economics. Let’s face it. Security costs money and time for a company, and unless there is regulatory or economic reasons (or surplus budget!), a company really won’t spend more money on the security. Companies are economics entities and as such work to maximize their profits. Some people don’t like to talk about that, but that’s reality. And this works not just on a macroscopic level with budgets, but also on a microscopic level: do your IT techs prioritize security projects behind business-facing projects and fires? Yes, they do. Doh!

9. Technical gulf from the trenches to the upper offices. When a CISO proclaims his company secure, most of us snicker a bit and throw back another shot of JD. When a CISO proclaims his company is in compliance and has a strong security process, do you really think he knows what the hell he is talking about? Or is he just playing salesman-lipservice and really has no clue if the company geeks really are making things secure? Often I wonder about that gulf between the techs and the upper offices and which reality each is living in day to day. Some CISOs Get It and know their environment, but I think those with a Clue are still in a huge minority (not necessarily because they’re not technically proficient, but simply because sometimes they are just too removed from the day-to-day).

9.5 Likewise, does your audit/security team have the skills necessary to tell the difference between secure and insecure, or are they just going over a checklist and then going to lunch? Technical expertise in regards to security is spotty in the technical ranks, especially on a broad level. I believe that more efforts in user education should be pointed towards technical staff (security and general IT) and not towards general employees.

on the art of balancing awareness and technological security

I like Kurt Wismer’s post, “the user is part of the system.” This is true.

I’m often misunderstood when I take a stance against user awareness types; often I’m taken as being totally against user education, when in fact I am just against over-emphasizing user education as the way to achieve security. I don’t agree with that, and I think user education is like compliance, it educates the lowest denominators in a corporation, but it won’t stop malicious activity or mistakes. It helps eliminate naive or ignorant mistakes. (Ok, I’ll give that some people will greatly benefit and listen to awareness, but that simply cannot be all people.) A blend of awareness and technology is what I feel is the key, although I’ll put just a bit more weight on the objectivity of technology… I mean, there is a reason social engineering always works, even with obscene amounts of user education.

I’m a firm believer in technological controls to mitigate the stupid choices that users can make, or simply limit what they can do. Taking this to an extreme is just as bad as taking user education to an extreme: we can create a nice, tidy, restrictive, safe cage for users to sit in and do their work. But is that cage going to make that user happy and productive, or docile and uncreative? This can lead to a discussion on where security should lie: the system, or the network. Some may say the system is already lost because we can’t make it a stifling cage…not without affecting our users greatly.

It seems that having freedom of choice is a fundamental part of the human condition, even to the point that we all bend or outright break rules every day, such as traffic rules. If people bend or break those rules when it has very real, obvious consequences, how do we really think users will act regarding our own company policies that are much more arcane and the threats far removed? Are your users ultimately more happy having admin rights on a system or having a set cache of programs they can use and nothing more?

Is this maybe one reason the web has become so enabled in the last few years? We try to control what they can do, so they use port 80 and a web browser…is the desire for choice and freedom always going to trump our smaller, user-impacting security approaches?

That’s really part of the art of corporate security; finding that balance that works. It is also the unfortunate part of our industry: no one standard is going to work. One person’s approach won’t work in every situation or every corporation. More so than the thousands of solutions each company can have to solve various needs and problems, the users are even more varied and unique. Ok, fine, very general rules will work, like “patch your systems.” But let’s face it; that shit is the easy part, the part any arm-chair analyst can recite.

Nonetheless, I love such discussions, even if there is not ultimate agreement. At least we’re talking about it and being open to creative solutions. I’d almost rather talk to open-minded people who don’t have an answer to these problems than those who think they know some Merlin-esque answer to solve all our problems everywhere…

dlp and database activity monitoring info from mogull

Someday I will likely need to sound smurt about DLP, even though I think it will be a feature and not a market given a couple years. And then, of course, it will just get watered down and slowly forgotten over the next 5 years. But, still, it’s a buzzword with mgmt.

So for my own future edification, this post is a pointer over to Rich Mogull’s 7+1 part series on DLP. Part 7 includes links to the other 6, and the +1 is an overview of the recent trend of DLP acquisitions.

And just because I don’t want another post, Mogull also has information in a 2 part series about database activity monitoring products. Part 1 and Part 2.

ebb and flow

“Sun and moon travel through the sky, they set and rise again. The four seasons succeed one another, flourishing and then fading again. This is a metaphor for the interchange of surprise unorthodox movements and orthodox direct confrontation, mixing together into a whole ending and beginning infinitely.” -The Book of War, Chapter 5: Strategic Advance.

sometimes developers just aren’t playing for the same team

This is the kind of stuff that makes us admins infuriated at developers. Just to illustrate, pretend we have 3 testing environments and then Production for a web app. Env1, Env2, Env3, Prod. It is expected code will be moved up through those environments sequentially.

Developer Ted: I am rolling out code to environments Env1 and Env2 at the same time.

[a few hours later]

Developer Ralph: Env2 is broken and my coworkers and I can’t get anything done. What’s wrong?

Admin Mike: The code rolled out to multiple environments earlier broke things and made the environments unstable. We’re working to fix this now. Talk to Ted who rolled it out in multiple places all at once to not do that in the future.

Developer Ralph: But I need to work now, and so do my coworkers. We’re going to start doing our work in Env3.

Admin Mike: [blank look knowing I don’t have authority here]

[short amount of time passes]

Developer Ralph: I need support in Env3 because it is not working properly now.

Admin Mike: Well, some of the stuff you moved up shouldn’t have been moved up and that environment is borked now and we’ll have to expend more energy to fix it.

Developer Ralph: But I and my people need to work, should we start moving to test in Production?

At this point strangling the developer actually seems like a plausible mitigation to further destruction and downtime…

powershell working with time objects

I have a perpetually running powershell script which is always looking at a text file to see if an install is scheduled to run within the next 2 minutes. This text file just contains a list of times when installs should run (or nothing). I want this install to run every night at 12:10 am. To do this, I need to make a list of the next 100 days’ worth of 12:10am entries.

$basetime = get-date “11/15/2007 12:10 AM”
[array]$times = @()
for($a=0;$a -le 100;$a++){ $times += “$($basetime.AddDays($a).ToString()) both” }
$times
11/15/2007 12:10:00 AM both
11/16/2007 12:10:00 AM both
11/17/2007 12:10:00 AM both…

This gives me a list of 100 strings that can be read into get-date as a time/date object!

$blah = get-date $times[3].replace(” both”,””)

Why the hell is that “both” part in there? Well, that’s something just for me, which describes the install that is occurring. When evaluating schedule entries, I replace those off and trim the string down. Why do I want to read this into get-date again? So I can do better compares!

$objScheduleTime = Get-Date $blah
if ($objScheduleTime.GetTypeCode() -ne “DateTime”)
   { “timedate is invalid” }
else
   {
      $TimeDifference = $objScheduleTime – (Get-Date)
      if ($TimeDifference -lt 0)
         { “time is in the past” }
      else
         { “time is in the future” }
   }

First, convert $blah into a date-time object, then check the type code to make sure it converted correctly. Incorrect conversions need to be handled and not continue as a null object, or the rest of the script will complain. As usual, there are plenty of ways to do this, but this makes sense to me.

soccer goal security, risk analysis, and more from an auditor

I hesitate to post this link which I gleaned from Anton Chuvakin’s blog, because it has a lot of hard sentences to read and rambles a bit, but it has enough stuff to be a bit thought-provoking. Anton Aylward’s post deals with soccer goal security, but touches on a ton of things involving security.

In his marvelous 1992 novel “Snow Crash“. Neal Stephenson describes a franchising system and makes reference to the “three ring manual”. This manual is the set of operating procedures for the franchise, who does what and how, down to the smallest detail. I mention this in contrast to, for example, some of the businesses that failed after 9/11. These businesses did not have any ‘plant’ – desks, computers, software, even data – that could not be replaced. They failed because their real assets were not documented – the business processes existed solely “in the heads” of the people carrying them out.

The real assets of a company are not the COTS components. This is a mistake that technical people make. The ex-IBM consultant, Gerry Weinberg, the guy who came up with the term “egoless programming“, also pointed out that people with strong technical backgrounds can convert any task into a technical task, thus avoiding work they don’t want to do. Once upon a time I excelled in the technical side of things, but I found that limited my ability to influence change with management.

Interesting stuff. Anton A. is an auditor, and as such has a unique perspective on the industry. It is easy (maddeningly easy) to point out the flaws in other people or businesses or processes, and no one does it better than auditors. Kinda like IT journalists who can spout off best practices and “told ya so’s” but don’t know anything about IT beyond their home office 10-in-1 fax printer. Ok, that’s unfair for the auditors, as they do have more usefulness and knowledge, in my books. 🙂

powershell and active directory searching

I’ve been doing some more work using PowerShell for small ad-hoc types of scripts. Basically I keep some notes around, and adjust those notes for what I need at the time. This works great when I need to query certain things from our Active Directory. While we use AD a lot, only my team uses it, which means it gets messy and out of sync quickly.

A recent request needed me to pull all the supervisors and managers in our company. Odd, but no one keeps a list of these, nor do we have neat groups in AD to accomodate the request. Great. I could, however, pull out everyone who is listed as having a “direct report” in their AD account, which is something the desktop techs *are* good about updating.*

$objADSearcher = new-object DirectoryServices.DirectorySearcher([ADSI]””)
$objADSearcher.filter = “(&(ObjectClass=User))”
$objFoundUsers = $objADSearcher.FindAll()

[array]$objADUsers = @()

foreach ($t in $objFoundUsers)
{
   if ($t.properties.directreports)
      {
      $t.properties.name
      $objADUsers += $t
   }
}

This snippet will search out all user accounts in AD and display the names of those who have direct reports. Further properties on any given account can be found by doing a .properties to it, .e.g $objADUsers[45].properties.
I’ve also had a need to quickly find all the members of a group in a way that allows me to copy and paste the results.

$i = “Supervisors Group”
$objADSearcher = new-object DirectoryServices.DirectorySearcher([ADSI]””)
$objADSearcher.filter = “(&(ObjectClass=Group)(name=$i))”
$objFoundGroup = $objADSearcher.FindAll()
$objFoundGroup[0].properties.member

This will display the result of the search for Supervisors Group. If only one object is returned, I often forget that I still need to reference it by index[0].

Now, if I get a user back and want to connect directly into their AD object, I need to leverage the path property.

$ADSPath = $objFoundUsers.path
$container = [ADSI]$ADSPath
$container.manager
$container.directreports

* I am positive there are many ways to accomplish these tasks, and I may not be doing the most optimal method, however, this method does work for me for now, until I find some better way.

rant on the economics of disk storage and business priorities

The economics of IT are always going to be a pain point. Sadly, such penny-pinching when it comes to IT spending can result in some pretty creative issues. This is just a small Friday rant from work, so read at your expense!

Today we had a web server D drive fill up (the drive with our data), which caused some errors to start occuring on that server. This filled up because the log files weren’t getting cleaned up. We didn’t get alerts because our web servers run on such small disks that we were getting constant reminders about low disk space, so we turned them off as no one would pony up for more space. *

The log files weren’t getting cleaned up because a separate web log processing server’s disk was full and couldn’t pull the logs in anymore. This filled up because no one a) wants to make a policy on how long to keep log files or how important they are, so they are kept forever, and b) no one wants to look at the criticality of the server and assign a dollar value, which can then be used to offset costs for more storage. So it stays with the disks it has.

So a non-critical system that can’t get more storage due to penny-pinching caused an intermittent production outage on a system that itself is running on fumes because no one wants to put out for more storage. Capacity planning and budget submissions are one thing, but as much as we do them, the exec/business side continues to say “No thanks,” to the expense.

Ugh! I understand this can be a way to go for companies, kind of a JIT of disk storage, but it really, really helps to be up front with that policy so IT staff doesn’t have to constantly work in a “worry/told you before” sort of mode all the time. It’s just not important until it brings down production and clients notice. Sounds awfully similar to security!

* I love the little side risk to this practice. Developers can put out code quite easily enough on their own to fill the disks and cause web servers to all die in production. And even if intent isn’t there, we do run the risk that someone will accidentally publish something large that effects a DoS.