It’s an unfortunate reality that you can be, and maybe already have been, rejected for a position you applied for. Certifications in the relevant fields in hand, a degree to your name…would you be gutted to know that “warm and fuzzies” carries equal weight to the other two?

Improving your warmth and fuzziness is key not only to getting a foot in the door, but advancement in your career. This is one of a few things that go into the nebulous area of “soft skills,” and I have passed on a lot of candidates because the soft skills aren’t there, and it takes a long, long time to train. Lacking IT skills, in comparison, isn’t a big deal; I can tell an admin that if they aren’t comfortable with what the next step is on a project, stop and come find me. When you lack soft skills, I can’t tell you to change who you are.

What goes into “warm and fuzzies” from the perspective of a technical manager? It’s a few things for me, and I’ll lay them out to the best of my ability:

Confidence is one. This manifests as high self-esteem, eye contact, and being relaxed and able to express a range of emotions in the interview. If you’re shrinking away the whole time, looking down, giving fearful responses that you’re very obviously hoping are the ones I want to hear, it gives me concern that you’re not going to be composed in an actual emergency, or that you’re going to embarrass the both of us if come higher-up puts you on the spot.

Another is the ability to speak to topics in your resume, on the spot. I am not a quizmaster-style interviewer. However, if your resume mentions “Configured and maintained Active Directory and Group Policy,” that is highly relevant to the position here, so I’m going to say “Tell me about your work with AD and Group Policy.” A bad answer would be “Uh, you know, all sorts of stuff.” It’s a bad answer for both of us, because now I’m going to have to ask some more direct quizmaster style questions to understand where you’re at with understanding Windows infrastructure. A good answer would be “Sure, before I arrived everyone was having to add network printers by hand, so I set up some security groups for different areas of the building, put the computers in the group that made sense, and set up GPOs to do the printer installation depending on the security group.” That answers a lot of questions at the same time, it shows knowledge of multiple areas at the same time. It probably knocks 5 minutes off the interview that would’ve only been an opportunity for you to dig yourself in a hole.

It’s really important to me that if you are going to put a technology on your resume, you’d better be prepared to explain exactly what you know about it. I have lost count of the times I’ve had someone say on their resume that they know “networking”, but the reality of the situation is that they know what an IP address is and what a MAC address is. They don’t know why they have to enter a subnet mask, they have no concept of basic switching and routing, they don’t know TCP vs. UDP. They would’ve been better off leaving it off entirely, because it feels very dishonest to me, and it puts you in a huge hole for the rest of the interview.

But that’s me, I’m a technical manager. When I had my interview here with 3 other C-levels, I could give a nonsensical answer like “An IP address is what identifies you to the world,” but as soon as the words “IP address” hit their ears, I may as well be talking about tachyon emitters and flux capacitors. My predecessor told me, “The best thing about this position is nobody here knows what you do. The worst thing about this position is nobody here knows what you do.”

So think about this. You’ve got non-technical management evaluating you. Your certifications may as well be from Starfleet Academy. They don’t know, nor do they particularly care, what a hypervisor is. Their needs are simpler:

  • The computers and internet must not break.
  • If the computers or internet break, I must feel comfortable with you being the one handling it.
  • I must be able to have a human interaction with you when things are not broken if I’m ever to let you out of your cage.

And guys and girls, we have a bad reputation when it comes to that third bullet point. Some of it is on our predecessors, some of it is on us, some of it is on the media’s portrayal of us. TV sitcoms involving “nerdy guys” have not done us any favors. But you don’t need to fix the whole world’s vision of IT professionals. You need to fix the hiring managers vision of you. This is more for advancement potential than getting in, because many organizations aren’t expecting that human interaction from an IT person. But they must feel comfortable with you if you’re going to get in.

In the long run, spending $300 on a public speaking course at your local junior college will do more for your career than $300 on another certification.

You may be in the majority of people that say “Ugh, I hate giving speeches.” And that’s totally understandable. Honestly though, the real world doesn’t have a lot of people giving speeches like you had to give in 8th grade History. Sales professionals and executives need that skillset, but that’s not the extent of what you get out of public speaking classes. What you just might get is a bit of confidence as you speak around a table, going over a plan of action, or answering questions in an interview.

What else goes into comfort for a non-technical manager? I think comfort and trust are very tightly linked. You can never be entirely comfortable around someone you deem untrustworthy. Trust, in turn, goes to integrity, it goes to reliability, and it goes to rationality. You won’t be fully comfortable around someone, and you won’t fully trust them, if they aren’t fully honest, reliable, or rational. Consider how each of those can manifest in an interview.

If I find that you really oversold your abilities with little probing, I must conclude that you are not fully honest. If your previous employers indicate that you had issues with absences or tardiness, or that you take far longer than you should to complete tasks, I have to question your reliability. Your overall behavior in the interview is being judged for rationality, but it is gauged mainly by questions about actions you’ve taken in the past, and whether they match up with what I would consider a rational action. I tend to ask candidates about the biggest mistake they’ve made in IT, and the actions they took after they made the mistake. There are two main points to this question. One, if the candidate says “I’ve never made any big mistakes,” they’re either very green or being dishonest. We all make mistakes, and everyone has their own context for what a big mistake is. Two, I’m not particularly interested in what the mistake was. What I’m after is the response. Letting your manager know immediately after the mistake has been made is rational and honest. Fixing a self-inflicted outage and walking away whistling is rational, but not honest. Quitting your job because you didn’t want to be seen after making the mistake is honest, but not rational and raises huge issues about reliability. (This did happen to a candidate, and they were not remotely equipped to be unemployed.)

Oh, and saying “I don’t make mistakes” is neither honest nor rational, and I’ve heard it more than once. Really need to knock that off.

I’m hoping this is helpful for a few of you. I know it can be disheartening to spend so much time and money (and money and money and) on the papers that show you know your stuff, but still not be given a chance. Spend a little time thinking about how you can up your warmth and fuzziness, and I’m confident it’ll help you in the long run.

Say you have the following structure:

  • \\DOMAIN\DFS\Folder1\ <– UserA can access this folder.
  • \\DOMAIN\DFS\Folder1\Folder2 <– UserA has no privileges on this folder.
  • \\DOMAIN\DFS\Folder1\Folder2\Folder3 <– UserA has modify access to this folder, subfolders and files.
  • \\DOMAIN\DFS\Folder1\Folder2\Folder4 <– UserA has no privileges on this folder.

With ABE, the UserA will not see Folder2 even though Folder3 is something they do have access to. So permissions are added for UserA, but because they were done incorrectly, they can now also enumerate Folder4 which they should not even have been aware of.

This comes up a lot, and there is a good way to handle it:

  1. Create the ACL Group: ACL_Folder1-Folder2_TRAVERSE and make UserA a member.
  2. Add the (Advanced) ACL on Folder2: ACL_Folder1-Folder2_TRAVERSE –> Read –> This Folder Only

Now, let’s extend the scenario a level deeper:

  • \\DOMAIN\DFS\Folder1\ <– UserA can access this folder.
  • \\DOMAIN\DFS\Folder1\Folder2 <– UserA has no privileges on this folder.
  • \\DOMAIN\DFS\Folder1\Folder2\Folder3 <– UserA has no privileges on this folder.
  • \\DOMAIN\DFS\Folder1\Folder2\Folder4 <– UserA has no privileges on this folder.
  • \\DOMAIN\DFS\Folder1\Folder2\Folder3\Folder5 <– UserA has modify rights on this folder, subfolders and files.

So, this is handled in much the same way, but it would be smart in this case to nest the security groups.

  1. Create the ACL Group: ACL_Folder1-Folder2_TRAVERSE.
  2. Create the ACL Group: ACL_Folder1-Folder2-Folder3_TRAVERSE.
  3. Make the Folder3 traverse group a member of the Folder2 group.
  4. Make UserA a member of the Folder3 traverse group.
  5. Add the (Advanced) ACL on Folder2: ACL_Folder1-Folder2_TRAVERSE –> Read –> This Folder Only
  6. Add the (Advanced) ACL on Folder3: ACL_Folder1-Folder2-Folder3_TRAVERSE –> Read –> This Folder Only

This keeps the ACLs clean and lets you attach the most explicit permission needed to the user.

If you’re like me and don’t have direct control of your own email filtering, or want to go a step beyond, you’re going to want a way to prevent non-PE viruses from running. Software Restriction Policies are good for this if you’re using them in a whitelist capacity, provided that you’ve also added the extension to the Designated File Types. From a blacklist standpoint it’s tougher.

Another way to approach the problem is to change the default program to open a particular file extension, and if nothing else it’s another layer of security. This has come up in response to .js-powered ransomware variants and, most recently, a .hta variant of Locky.

hta override 3

hta override
The policy is as follows:

User Configuration -> Preferences -> Control Panel Settings -> Folder Options -> Open With

Action: Replace
File Extension: hta
Associated Program: %windir%\system32\notepad.exe
Set as default: Enabled.

These policies do require you to be either aware of any applications that this will impact or being willing to find out after it’s kicked in. Most organizations can modify .hta and .wsh with no negative repercussions. Many can modify .vbs but many cannot, as they are used by many old logon scripts still in use. Many can modify .js, as even those in web development are likely using an IDE to work with JavaScript files rather than simply double-clicking them. Just be aware of your environment’s needs when implementing this.

Enabling this policy and setting it to open in Notepad also benefits you because the end-user will still have something unusual (but now harmless) pop-up, a Notepad window that is full of dangerous-looking stuff. With any luck, they’ll notify the helpdesk so they can clean the system up.

So I have a code offering today, which I’m calling DangItBobby.ps1. It lets you remotely disable the NIC of a computer given only the username that is logged in. In essence, when in the middle of a ransomware infection, and you see that the owner of all the files is changing to Bobby, you run the script and provide credentials of a local admin account. Then you tell it you’re looking for Bobby, it’ll check AD to make sure that’s a valid account, then check with WMI to see if there’s an explorer.exe process running under Bobby’s context on each computer, which you can narrow down with the first few characters of what the workstation might be. If they’re logged into multiple workstations it’ll let you choose which one to work with. Then it’ll give you a list of NICs and a little information about each one, and let you choose which one to disable.

I hope I don’t need to tell you to be careful running this.

I ended up needing to do this last week, we have a LOB application that people access via Terminal Services, and it doesn’t clean up after itself in the Temp folder, which causes the application to act up. Can’t get the developers to fix the problem so it’s on us. The existing fix was one batch file, tied to one scheduled task, for every user (50+) of the terminal server. Nightmare to keep maintained.

So I built a simple powershell script, one script for all user profiles.

for(;;) {
try {
Set-Location "C:\Users"
Remove-Item ".\*\AppData\Local\Temp\*" -recurse -force
catch {
# EventSentry will watch for Powershell dying.

# wait for a minute
Start-Sleep 60

Then I created a scheduled task to have Powershell run on startup with the argument -file Path:\to\script.ps1 and had it run as SYSTEM with highest privileges. Since this was the first time using ps1 files on this server I also needed to Set-ExecutionPolicy RemoteSigned.

While rebuilding a piece of my lab for file server and DFS services, I had an odd set of symptoms. I had a user in a security group that was not set to be able to change permissions, and no ability to take ownership, in the NTFS permissions. Yet they were able to add permissions to give others elevated access, or even elevate their own access.

It turns out I’d forgotten the share permission side, where this still had some debug settings; in particular, that “Authenticated Users” had full control. Have you ever really messed with those share permissions? Usually we rush right on and do Everyone -> Full Control and then lock it down with NTFS permissions later. But, have you ever tried just doing Change and Read and leaving Full Control off? It’s actually what you’re usually trying to accomplish, and gives you a little head start in that you don’t have to hope you don’t get a clever end-user later that elevates their own NTFS permissions.

When I first started fighting ransomware in late 2013, I had a premonition that this was something serious. While CryptoLocker was rather easily defeated in the enterprise and ultimately killed by killing the botnet, media outlets and tech sites ran with the story. It showed this small group making millions and millions of dollars. Guess what? More people started writing ransomware.

Cut to now. Ransomware-as-a-service is a real thing you can buy, some variants have live chat support to receive payment, and we routinely see new versions with bugfixes and feature-adds. One of the last major flaws in ransomware, the inability to enumerate non-mapped network shares, was overcome in the latest Locky build that calls WNetOpenEnum() to attempt to traverse every share on the network.

For several years, the endgame was more abstract. Hit the PC with your rootkit, join it to your botnet, sell botnet access to spammers for a fee. Now they can cut out the middle man and have less overhead, since there’s not a need for constant command-control oversight. It’s a path to riches hampered only by the still-high knowledge barrier to acquire and send bitcoin. And by affecting the user’s files, rather than a popup about the FBI or TotesLegit AntiVirus which can simply be fixed by backing up the data and nuking the PC, you’ve got them at your mercy.

This is going to get worse way before it gets better. You’ll see builds that try to invoke APIs for popular cloud storage providers to delete the versioning. They’ll find ways to avoid taking ownership of a file to quickly spot the vector of infection. While it’s almost impossible to be truly proactive to effectively block ransomware, there are things that can be done.

  • Avoid mapping your drives and hide your network shares. WNetOpenEnum() will not enumerate hidden shares. This is as simple as appending a $ to your share name.
  • Work from the principle of least permission. Very few organizations need a share whereby the Everyone group has Full Control. Delegate write access only where it’s needed, don’t allow them to change ownership of files unless it’s a must.
  • Be vigilant and aggressive in blocking file extensions via email. If you’re not blocking .js, .wsf, or scanning the contents of .zip files, you’re not done. Consider screening ZIP files outright. Consider if you can abolish .doc and .rtf in favor of .docx which cannot contain macros.
  • Install ad-blockers and script-blockers as standard loadout. Drive-by malware is out of control right now. Cut off the vector of infection. I use uBlock Origin which is easy to disable case-by-case and offers niceties like element blockers.
  • Install the old CryptoLocker Software Restriction Policies which will block some rootkit-based malware from working effectively. You can create a similar rule for %LocalAppData%\*.exe and %LocalAppData%\*\*.exe as well. It was pointed out in the reddit comments, that if it’s at all feasible, run on a whitelist approach instead of a blacklist. It’s more time-intensive but much safer.
  • Stay up-to-date on the latest ransomware news, how they operate, and what the decrypt instruction filenames are. These can be added to file screens with FSRM to execute a command to kill the share. Simply disabling the affected user is not enough without also forcing them to log off.
  • Backups. Having good, working, versionable, cold-store, tested backups makes this whole thing a minor irritation rather than a catastrophe. Even Windows Server Backup on a Wal-Mart External USB drive is better than nothing. Crashplan does unlimited versioned backups with unlimited retention at a flat rate, and there’s a Linux agent as well. Hell, Dropbox does versioned backups. Get something.
  • [Added 5/12/2016] For some non-program (WinPE) viruses, you can change the default behavior of some extensions to open in Notepad rather than the original vulnerable target. A guide is here.

Ransomware has evolved a lot in just a couple of years, and the end is nowhere in sight. Get your defenses up, and know the enemy. There’s a lot less heartache doing the prevention before you’re hit than after.