Wednesday, October 23, 2019

Software Development Security | Polymorphic Viruses

What is a Virus?

Simply put, a virus can be an application or an actual string of code that intends to poison software. Viruses can affect code the same way that they can affect human beings. You catch a virus, it spreads, and your sick. All it takes to get into your system is to “catch” it. Once the virus gets in it can and will spread to multiple segments of your system or code.

One example of a virus is a Polymorphic Virus. I like this one because it relates to polymorphism which also makes me think of metamorphism, (another attack but for now we will stick to poly). This particular type of computer virus is amongst the most complicated because it duplicates/recreates itself and is also self-encrypted. While most of us are using AntiVirus (AVR) software to detect these types of intrusions, this virus can completely bypass your scanner because of the creation of itself in multiple variants. 

What is the best approach for protection?

While it is highly recommended that you employ some time of AVR in your network, there is a bigger picture approach that will help “stave” off these malicious code attacks. Think in terms of Layered Security, what else can you do besides JUST having a virus scanner? Have you considered utilizing Antimalware as well? Yes, AVR scans for viruses, but Antimalware is actually designed to defend against actual malware attacks (malicious code attacks), what about Threat Detection? Do you have Email Security? Just some food for thought. 

Ashley J. Oliver
Oliver COM Solutions, d/b/a

Thursday, October 17, 2019

Identity and Access Management | Single-Sign On (SSO) | Kerberos Single-Sign on (SSO)

Okay first, what is it? SSO is a capability that enables end users to enter their credentials one time; then they ca

The most commonly used authentication protocol on the market at present is Kerberos. Fun fact: if the name sounds familiar to you it’s because it is named after Cerberus, (Greek Mythology), the three-headed dog that guards the entrance (gates) to the underworld. MIT is so clever! So, essentially Kerberos was created (by MIT) – food for thought – Cerberus doesn’t only guard the gate, he also prevents the dead from leaving. (disclaimer: I always make learning fun so you will repeatedly see puns and references on my blog, there is no reason learning needs to be boring)! 

 Why am I even saying this to you? Lol, think for a moment – every Cybersecurity Practitioner, regardless of Job Title, knows that “The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-lined room with armed guards—and even then I have my doubts.” —Eugene H. Spafford. Clearly, we need to use our computers, mobile phones, tablets, what have you during the day to complete our work and business tasks, so this is an unrealistic expectation. However, Kerberos was brilliantly thought up by MIT in order to do just the same – protect your internal system (assets) from the extremely unsecured use of the internet.

How does it work? So, Kerberos uses Symmetric Cryptography in order for a client to verify it’s identity to a server, known as a KDC. The KDC then acts as an automated distribution center which operates by storing, distributing, and maintaining session and secret keys. The KDC then generates a ticket from the Ticket Granting Service (TGS). Long story short, this TGS operates on a set of principles which is known as a realm in Kerberos. I won’t go into detail here but if you want to learn more about the potential of using Kerberos in your network and its advantages – by all means send me an email and we can talk! I also want to point out before we leave that Kerberos was developed as a part of MIT’s “Project Athena,” Which makes perfect sense considering the clever name of the best SSO technology available to us. Thank you, MIT. (I am a frequent Redhat Linux user, so this definitely resonates with me)

Ashley J. Oliver
Oliver COM Solutions, d/b/a

n access resources in both primary and secondary network domains. Why is this relevant? Well, time is essential, especially in the Cybersecurity realm, and we need a product that can speed up that authentication time!

Monday, October 7, 2019

Code for Modern Day Developers | Software Development Life Cycle (SDLC)


Ashley J. Oliver
CISSP Candidate
Oliver COM Solutions, d/b/a

Code for Modern Day Developers | Software Development Life Cycle (SDLC)

Have you ever been tasked with developing code for a project? Better yet, imagine being asked to develop code (for free) for a company that interviewed you. What is your immediate response? Do you figure it out and sit down and spend hours writing this code whilst feeling like you’re performing tricks at the circus? Only to hand off a text file with a bunch of variables and libraries etc. that you spent working on in order to ‘prove’ that you deserve the job? The question here is; who are you really proving it to? Yourself, or them? 

I ask this question considering the idea behind the Software Development Life Cycle or SDLC. Bearing in mind that in general coding is a completely different ball game for this generation. We now have libraries that are already written for us, scripts to call functions that are pre-designed, etc. However, if you’re like me; you care severely more about best practices and integrity than you do copying and pasting a line of code. 

The Software Development Life Cycle or SDLC is a model that covers about five different phases. These phases help us as practitioners to determine and reference which would be the best possible solution to build this product. Think best-practice. I’ve been asked several times in the recent weeks to walk a Senior-Level Engineer through ‘what I would do if’ this week. And guess what – my response is never to walk through a bunch of technical jargon to again ‘prove’ that I deserve it. However; what would I really do on the job? And what have I done.

First and foremost; Gather Requirements. This is an essential phase, you wouldn’t start a project without learning more about what is needed, would you? This phase determines the ‘why’ to create this code, who it is created for, and what it will do.

Second, Design. How can this software accomplish the goals defined in the Gather Requirements phase? Third, Development. This is the actual programming phase. Writing your code to meet the necessary specifications from the Design phase and then implementing it as such. Fourth; Testing. Again a crucial step, preferably in a QA environment. Verify, validate, make sure that your code works the way it is supposed to. And Lastly, Operations/Maintenance. This is the actual deployment phase. Always make sure your code is configured correctly, patches are up to date, and the code is monitored.