Tags:
Meet Jason Fossen. Jason is the author of Securing Windows and PowerShell Automation (SEC505), the Windows day of Security Essentials (SEC401) and other prior SANS courses related to Microsoft Windows. He is a SANS Institute Fellow and has been teaching for SANS since 1998.
SANS: How did you get started in IT security?
Jason: I was a teenager when the movie War Games came out. I pretty much wanted to be David Lightman. My interest in computers and hacking just kept going from there. Even today, when I need to enter a throw-away password that doesn't matter, I'll sometimes use "Joshua" or "Pencil" or "CPE1704TKS", which are all from the movie.
SANS: How did you come to write courses for SANS?
Jason: After grad school I was doing Windows NT consulting in Austin and teaching MCSE courses on the side. One of those MCSE courses had some flimsy security content, so I added an extra day of material on Windows hacking. My plan was to expand that to a whole Windows security course, sell it to PPI, the training provider where I lived, and use it to get more consulting work. There in Austin I knew a couple guys who were going to teach an NT course at a SANS conference and they asked me to come along to run the demos. This was in 1998. At the conference one of the guys had to leave, so I helped co-teach the next day. This caught the attention of Alan Paller, the director of SANS, and I mentioned the security courseware I had written. SANS had a publication at the time called the Windows NT Security Step-by-Step Guide and Alan wanted that converted into a training course. So Alan added me to the SANS author team.
SANS: And that course later became SEC505, your PowerShell course today?
Jason: Yes. That Windows NT course in 1999 was one of the first multi-day courses at SANS to require attendees to bring laptops for labs. Later on in 2000, SANS renamed the course to "Track 5" to go along with a bunch of other week-long courses that were being developed at the time. When SANS created the GIAC certification program, my Track 5 course became SEC505 for the GCWN cert exam. That's also around when I wrote the Windows day of Security Essentials, and that course later became SEC401 for the GSEC cert. For both SEC505 and SEC401.5, every year I trim the old stuff to make space for the new. I just added a bunch of Azure material to my day of SEC401.
SANS: When did you add PowerShell to SEC505?
Jason: Originally, SEC505 used VBScript for the automation, but when PowerShell came out, it was obvious, PowerShell was going to be the future, so I replaced all the VBScript material with PowerShell. This was about ten years ago. SEC505 today is a Windows-security-through-PowerShell course, attendees learn both Windows security and PowerShell at the same time -- specifically, how to automate Windows security with PowerShell. PowerShell is a friendly language for new coders.
SANS: But isn't PowerShell also used to spread ransomware?
Jason: Unfortunately, yes. In fact, in the capstone lab in SEC505 on the last day, attendees write a PowerShell ransomware script and then we talk about defenses against ransomware. It's a frightening, but fun, way to learn how to write PowerShell code.
SANS: How do we block PowerShell attacks?
Jason: PowerShell is almost never used for the initial compromise into a LAN or VM, it's mainly used for post-exploitation, for "living off the land" once you're already inside. If Microsoft tomorrow suddenly removed PowerShell and installed Python or Bash instead, hackers would simply switch to Python and Bash. That's why we focus on containment and kill chain defenses in SEC505, like using Yubikeys for multi-factor authentication and host-based firewall scripting. In some ways, it's better for the defenders if hackers keep on using PowerShell. We want them to use PowerShell so that we can log their activities. PowerShell has great logging, if you turn it on.
SANS: What is PowerShell not good for?
Jason: PowerShell is optimized for admin friendliness, not performance. PowerShell will never be the best choice for Big Data analysis, like for sifting through terabytes of log data to do threat hunting. That is better done with a language like Julia or the query features of your SIEM.
SANS: What programming languages should a new security professional learn?
Jason: On Linux, start with bash. On Windows, start with PowerShell. PowerShell can be installed on Linux too. After that, C# would be a natural next step since C# is very popular in Microsoft land. PowerShell itself is written in C#. Python is also very popular in infosec, but it's not as fun as PowerShell or as fast as Julia. Julia is probably the way to go for data analysis in Jupyter notebooks. Almost no one is using PowerShell in Jupyter notebooks. Of course, it's very hard to predict what language will be "hot" in five or ten years, so a more pragmatic approach is to find out what your current employer needs today and then learn that language, whatever it is. Once you learn a programming language --any language-- learning another one will be much easier. PowerShell is built into Windows and Azure, so perhaps use PowerShell on prem and in the cloud for automation, then use Julia for data analysis, C/C++/Rust for low-level OS work, JavaScript for browser attacks, and so on. In general, it's the old "right tool for the job" advice, but everyone will expect you to know at least the basics of bash on Linux and PowerShell on Windows.
SANS: What advice do you have for someone who wants to get into information security as a career?
Jason: I often hear this question from new SANS attendees. Think about it this way. Imagine that you have won the lottery and will get $50k a year for life. You would still need to work, but you wouldn't have to worry too much about what your job paid. So, what would you do? What do you do with your free time today for that matter? Do you enjoy tinkering with servers, playing with malware, sniffing packets, trying out hacking tools, reading technical books in your free time? If the answer is "No", if you don't even enjoy those kinds of things today, then you might reconsider IT security as a career choice. The problem is burnout. Yes, infosec can pay well, but if you don't enjoy the work, you'll get exhausted after a few years and burn out. Try to turn one of your hobbies into a career, and if that is security, great! Pick a security topic, dive in, become an expert at it, then see where it leads.
SANS: How about you, any hobbies to avoid burn out yourself?
Jason: I've been playing with ZFS recently. It's a beautiful file system. Made me rethink what I thought I knew about RAID.
SANS: I mean, hobbies outside of IT?
Jason: Ha, well, I have kids, including one with special needs, so it's either work time or family time. But there is a YouTube channel I follow, it's called Journey to the Microcosmos. I bought a microscope for the kids and we sometimes go get pond water to look for amoebas and other critters.
SANS: What's next for your PowerShell course at SANS?
Jason: More ransomware defenses, OpenSSH remoting, more Zero Trust with PKI certificates. Also, how to do automation without diving into the whole Kubernetes and microservices deep end, which is not for everyone, especially since I think Microsoft is going to deprecate Desired State Configuration (DSC) and Server Nano containers in the next couple years. DSC and Nano Server probably won't make it. On the other hand, look at the Windows Subsystem for Linux (WSL) and Android app support in Windows 11. Microsoft is serious about investing in these. I've been thinking about how these should go into SEC505 and the Windows day of SEC401.
SANS: Thank you Jason. To learn more about Jason and when you can take SEC505 (Securing Windows and PowerShell Automation), visit his SANS bio page. Get Jason's PowerShell scripts from BlueTeamPowerShell.com, they are all in the public domain, or catch him on Twitter @JasonFossen.