-
35C3 preroll music
-
Herald: So our next speaker is Mark
Lechtik and he is going to talk about
-
SiliVaccine, North Korea's weapon of mass
detection. Mark is the malware research
-
team leader at checkpoint and he deals
with reverse engineering and malware
-
analysis both as occupation and as a
hobby. So a huge round of applause to Mark
-
applause and we are starting the talk.
-
Mark Lechtik: Let's begin with a short video
-
Video
-
Laughter
Ladies and gentleman, for those of you who
-
don't know this lady in pink, her name is
리춘히, a good friend of mine, North Korea's
-
main news presenter. And she just turned
75 years old this July. Let's give her a
-
warm round of applause for her passionate
introduction to SiliVaccine. Of course I'm
-
lying, she's not my friend, nor did she
even speak about SiliVaccine in this
-
video. But still, kudos to her for
grabbing your attention. And again, hello,
-
thank you for joining me for this talk
titled "SiliVaccine - North Korea's weapon
-
of mass detection". Before I actually tell
you about the research story here, I would
-
like to introduce you to the two notorious
dissidents who are behind this infamous
-
research. You see them right here on the
screen. One of them actually happens to be
-
me. My name is Mark Lechtik. As previously
mentioned, I'm the Maleware-research team
-
leader at checkpoint and my partner in
crime for this research is named Michael
-
Kajiloti. Unfortunately, he couldn't be
here today because he's in a vacation in
-
Hawaii probably drinking some smoothie
from a coconut. So I thought this would be
-
a better picture. To Michael, have a lot
of fun in your travel. Come home safely
-
and beware of Koreans who stare at you
suspiciously. Now, we both work at
-
checkpoint as mentioned and without
further ado let me give you a little bit
-
of a background for this research. So this
whole research actually began at one point
-
this year around March when I was looking
for something to read in Twitter and then
-
I stumbled upon this article you see right
here titled "Inside North Korea's Hacker
-
Army" by Bloomberg and it's actually a
pretty interesting piece, I recommend you
-
to read it. It discusses particular a
North Korean defector who was drafted to
-
work for a government agency in North
Korea and ended up raising money for the
-
regime through hacking. And an interesting
thing I noted throughout this publication
-
is that the author tried to portray some
kind of a narrative of North Korean state
-
sponsored cyber operations and in
particular in one paragraph he gives a
-
representation of what seems to be the
North Korean government's official comment
-
to various hacking allegations made
against North Korea by the West. And
-
here's a quote: "So formally, North Korea
denies engaging in hacking and describes
-
accusations to that effect as 'enemy
propaganda'. It says its overseas computer
-
efforts are directed at promoting its
antivirus software in the global market.
-
The country has for more than a decade
been working on such programs including
-
one called SiliVaccine. Now looking at
this, you're probably asking yourselves:
-
What the hell is SiliVaccine? Well, as you
may understand by now, SiliVaccine is an
-
antivirus that is developed and used
exclusively in North Korea. So this is
-
basically a North Korean antivirus. Or how
I like to call it: The Kim Jong Un-tivirus.
-
laughter Now obviously this is
a very rare product. You can't find it on
-
the Internet, you cannot download it
anywhere. It basically resides only inside
-
the DPRK. As far as we could tell in this
research it's actively developed since
-
2003 and the version that I'm going to
focus on here today is version 4.0, which
-
was released in 2013. Just as a caveat: We
are also in possession of another version
-
from 2005, which was one of the early
versions of SiliVaccine and I will mention
-
it a little bit later throughout this
talk. Now if you know anything about North
-
Korea, then one thing you should note is
that there is actually no internet inside
-
North Korea, right. Instead, what they
have is what's called an Intranet, which
-
is this highly restricted but glorified
local area network; and, having that in
-
mind, you must be thinking "Why the hell
would North Korea use an antivirus in the
-
first place?". Well, there are a few
interesting explanations for that: One,
-
the more exotic one, is to actually
protect against threats that might reside
-
within media that is smuggled to the
country. And for this matter as an
-
example, it turns out that there is
actually a phenomenon of USB sticks with
-
Western media that somehow magically find
their way inside North Korea. And then
-
they get sold in the country's black
market to citizens. And I know it sounds
-
totally fucked up, but remember, it's
North Korea and to convince you a little
-
bit better, you're invited to go to this
website called "flash drives for freedom",
-
which is actually a crowd-source funding
project for USB sticks that get written
-
with content from the West and smuggled
into North Korea. So just a fun fact, if
-
you have any kind of problems with your
local IRS, don't worry. The smuggled USB
-
stick is 100 percent tax refundable. As
for the content inside of it, well, it
-
contains just all kinds of information,
entertainment content from the West like
-
Wikipedia articles and South Korean soap
operas, which somehow managed to threaten
-
the North Korean regime. But anyways,
there's also another explanation for the
-
existence of this antivirus, and this is
the fact that is actually stated by North
-
Korea itself, is to raise money for the
regime by selling this product in the
-
worldwide market. As a matter of fact to
corroborate this, we can refer to the 2005
-
version of SiliVaccine that I mentioned
previously, which you can see here on the
-
screen, was written both in Korean and
English, which might hint at the fact that
-
whoever wrote this version tried to make
it more appealing for English-speaking
-
users as well as Korean ones. Now you also
must be asking yourselves: "How the hell
-
did we get our hands on the software in
the first place?" Well, the answer to this
-
lies in the Bloomberg article I mentioned
earlier. It linked to a blogpost by this
-
guy named Martin Williams. Martin Williams
is a journalist who covers various kinds
-
of news items related to North Korea. And
he actually got this particular software
-
through, I would say, a slightly
suspicious email from a guy calling
-
himself Kang Yong Hak, a security engineer
from Japan, who wanted to give it to him
-
as a journalistic lead. And remember this
email, we will talk about it a little bit
-
later. Now of course Martin was kind
enough to share the software with us and
-
it's the place to thank him for making
this whole research possible. Now what did
-
we want to find out in this research? So
first of all, we wanted to understand the
-
technical structure of the software. How
is it built? Through which we hope to get
-
somewhat of an anthropological view on
some of the practices employed by the
-
North Korean engineers meaning how
engineers with restricted resources tackle
-
a big project like building an antivirus
from scratch. Also we wanted to see if we
-
can find any kind of abnormal behavior
inside this antivirus. Some things that
-
could have been left in place and expose
some hidden agenda of the developers and
-
in particular we try to locate any
potential backdoor that could have been
-
deliberately put in place as a means of
surveillance against the citizens. So with
-
that in mind let's take a short overview
of the antivirus architecture and for this
-
matter let's start with the software
libraries that comprise it, the first of
-
which is called SV shell. This is just a
basic shell extension that introduces this
-
entry in the context menu which you can
see if you click the right mouse button.
-
And this is basically meant to just do a
manual scan on a file using SiliVaccine.
-
And you know what - let's just test this
feature and see if it works. So here we
-
have malware, we right-click, we press on
this feature and nothing happens which is
-
really just some kind of a bug that we see
right from the very beginning of testing
-
this antivirus spoiler. There are more,
but never mind. Let's move on. The next
-
component we see here is one called
SVKernel.dll. Now this is in fact the file
-
scanning the engine of this antivirus. And
this is really the core component that
-
contains the logic that implements virus
scanner files. This .dll exposes roughly
-
20 export functions with the names
SVfunc001 through SVfunc020 - very
-
ambiguous naming convention - and they are
of course used in conjunction with
-
patterns or signatures which is the
content that allows the software to decide
-
if a given file is malicious or not. Then
we have another group of components which
-
is pretty self-explanatory. These are the
GUI components the first of which is this
-
tray menu you can see on the right corner
of the screen. And this little menu allows
-
you to execute any other GUI menus in this
antivirus. For instance you can see the
-
following menu where you can do a full
scan on the file system. You can play
-
around with some of the configurations of
this antivirus. It's also possible to do
-
some whitelisting and blacklisting
actions. And basically this is a GUI one-
-
stop shop for all of this antivirus'
features and other... oh, before talking
-
about the other components, SVmain
actually communicates with a driver called
-
SVHook.sys. This is a driver that is meant
to convey some information as the main
-
from the Kernel space. We will discuss
this driver a little bit later. Then we
-
have the update mechanism of the antivirus
which will basically download any kind of
-
update binaries and components or update
signatures and we'll verify them with an
-
external component called SVDiffUpd.exe.
And of course, as I mentioned, everything
-
here resides inside North Korea's
Intranet. So this update client will
-
communicate with a server inside North
Korea and it will do so using a custom
-
update protocol which works on top of the
HTTP protocol. And here you can see some
-
of the messages exchanged between this
update client and server. And one thing I
-
would like you to notice is the vast
amount of information conveyed through
-
this update protocol. You can see fields
like a serial number, some kind of an
-
interface ID and IP which is for the most
part kind of suspicious. I mean, why the
-
hell do they need all of this information
just for an update mechanism? But since we
-
don't have any access to the server or any
kind of way to understand how the user
-
communicates with it we can't really tell
why this information is collected so we'll
-
just leave this fact as is. Another
interesting thing is that the whole HTTP
-
protocol was manually implemented by the
developers and along the way they did some
-
interesting mistakes for instance the
content length field of the HTTP header is
-
written with an underscore here which is
kind of a mistake. It's not the way it is
-
intended to be used. Also the authors
wanted to convey the update client's
-
identity to the server and they did so
with the user agent which is a pretty
-
typical way of doing this but instead of
only using the user agent they added
-
another field called "User-Dealer". I have
no idea what kind of dealer they had in
-
mind laughter but obviously this has
nothing to do with the HTTP protocol. And
-
speaking of dealers there is yet another
component here called SVDealer.exe which
-
is actually the real-time scanning
component of this antivirus which you can
-
enable through the tray menu as well. And
this particular component will use another
-
driver called SVFilter.sys which is a file
system filter driver meant to intercept
-
all kinds of access to the file system and
issue the underlying file to a scan prior
-
to actually doing any kind of action on
it. And, again, we'll discuss this
-
particular driver later on. At this point
I should mention that the two components
-
here that actually do any kind of scanning
tests are SVDealer and SVMain that you see
-
here on the screen. Obviously they would
have to use the file scanning engine for
-
this purpose and also a bunch of
signatures which are represented through a
-
series of files called the pattern files.
Another thing here that we have as a
-
driver that I'm not going to talk about at
all. This is a driver called ststdi2.sys.
-
This is basically a TDI network filter
driver. If you don't have any idea what I
-
just said, this is perfectly fine because
this driver does absolutely nothing
-
laughter. It just resides inside this
antivirus and collects all kinds of
-
information about TCP connections and it
should be queried theoretically by other
-
components. But no one ever queries it so
it seems like it's just some kind of a
-
residue from previous versions of
SiliVaccine. So we'll just leave it be, I
-
guess. And another interesting point here
is that a lot of these components you see
-
here were protected with a legitimate
protector, a commercial protector called
-
Themeda which - if you heard of it, you
probably know - it's a pain in the ass to
-
reverse engineer. Luckily for us, whoever
used this protector did not enable a lot
-
of its features and we could unpack it
with moderate efforts. This is the full
-
architecture of this antivirus. I'm not
going to go any further in it. You can
-
read about it in our publication, full
publication about this software. Actually
-
I want to focus in all of this complicated
scheme on one particular component which I
-
already discussed. This is SVKernel.dll. I
remind you: this is the file scanning
-
engine of the antivirus. This is really
the heart and soul of this whole software
-
and this is why we're going to talk about
it next. And I would like to begin this
-
discussion about this component with what
every good reverse engineer looks at. And
-
these are strings, of course. And the
first thing we did was to open this file
-
and look at its strings and, like every
professional reverse engineer, we looked
-
them up on Google laughter and here is,
ladies and gentlemen, where it actually
-
gets interesting because it turns out that
if we look it up Google we come to another
-
file called vsapi32.dll. Now what is
vsapi32.dll? As it turns out, this is yet
-
another file scanning engine. Actually
it's a file scanning engine belonging to a
-
big corporate in the security field and
that is Trend Micro laughter which we
-
thought was kind of surprising. And
looking at this, we thought: does it mean
-
that this .dll is in some way incorporated
inside SiliVaccine? Did they use any kind
-
of interesting way of incorporating its
functionality inside their engine? Well,
-
let's find out laughter. So here on the
screen you can see what's called the
-
binary diff. This is a binary comparison
between those two engines. On the left
-
side you can see the Trend Micro engine
and on the right side you can see the
-
SiliVaccine engine and actually you can
notice a few things here. For one, there's
-
a 100 percent match between more than a
thousand functions of those two engines. A
-
thousand functions is like a quarter of
SiliVaccine's engine code. And then you
-
can see also that there's a 100 percent
match on some of the export functions. In
-
fact, if you look at all of the first 18
export functions in SiliVaccine, you
-
realize they somehow map to functions of
Trend Micro. And as an example, just take
-
three of these functions and look at their
call for graphs in IDA and we can see that
-
they're pretty similar for the most part,
but I would say it's more interesting to
-
note the small nuances or the small
differences between those particular
-
functions. And as an example let's take
this pair of functions, VSinit and
-
SVfunc005. Well, one interesting thing we
noticed at the very beginning is that
-
while Trend Micro's engine uses mostly
Lipsey functions like "memset", for
-
instance, the equivalent in SiliVaccine
would at some points in-line those
-
functions, it would use function inlining
to convey the same function and that
-
essentially hints at the fact that the
developer of SiliVaccine could have
-
recompiled this particular Trend Micro
code with some kind of a compiler
-
optimization that was not applied on the
original engine. You can see another
-
example for this right here, with the
"memcpy" and "qmemcpy", its in-line
-
equivalent. And let's look at another pair
for this matter. So we have VSgetVSCinfo
-
and SVfunc004. Once again, function
inlining. But another artifact that was
-
left here are these numbers you see right
here. So it turns out that this particular
-
field that is populated in this structure
you see here is actually the engine
-
version of this antivirus and it turns out
that the engine version used inside
-
SiliVaccine is a 8.910 which is an engine
released by Trend Micro back in 2008. Now
-
recall that this software is from 2013. So
basically whoever wrote this was using a
-
five year old engine inside his code. And
finally, let's look at another pair:
-
VSquit and SVfunc006. Once again, you can
see a call to a proprietary SiliVaccine
-
function inside what used to be a Trend
Micro function. This is just some kind of
-
a clean up function for a driver called
"svio" which has nothing to do with Trend
-
Micro. And this again strengthens this
kind of speculation that, when compiling a
-
SiliVaccine, there was some kind of use of
a proprietary resource that belongs to
-
Trend Micro. Well, I would like to mention
at this point that this was not the only
-
instance of a Trend Micro engine we found
in SiliVaccine. In the 2005 version which
-
I mentioned earlier we actually found a
trace of another component by Trend Micro
-
which is called tmfilter.sys. This is
actually a kernel mode equivalent of this
-
engine called vsapi32. And this really
shows that this whole sort of copyright
-
infringement was not a one-time thing. It
has been possibly going on for quite a few
-
years. Now, we reached out to Trend Micro
to get the response and basically, just to
-
sum this up, Trend Micro says that, yes,
SiliVaccine used a 10+ year old version of
-
their engine in their code. They
said,like, "WTF? We did not do any
-
business with North Korea" laughter.
Also they're saying, "We have no idea how
-
they got our engine." But they do hint at
the fact that they worked with some
-
vendors as OEM back at that time and maybe
it's possible that one of these OEMs
-
leaked their code or what not. So who
knows. So other than, you know, looking at
-
this; other than saying that this is a
very kind of secretive antivirus that's
-
developed inside North Korea, we couldn't
help but notice that there are quite a lot
-
of mechanisms used by the authors to
conceal the fact that they're using a
-
third party product. And again, I remind
you: we just realized that SiliVaccine is
-
essentially using a Trend Micro engine and
we thought - if they're using the same
-
engine this doesn't mean that they're
actually using the same signatures as
-
well. So if we compare this on the surface
then it seems that no because SiliVaccine
-
has multiple patterned files while Trend
Micro has one single large file. And also
-
there seems to be no kind of similarity
between them on the binary level, but if
-
we look a little bit deeper then we can
find the place in the code where those
-
particular pattern files are being loaded.
This happens in SVKernel.dll in a
-
particular function called SVfunc19. And
what happens there is that the name of the
-
particular pattern file of one of the
parent files is being calculated or
-
generated, then a handle to this file is
obtained, the contents of the file are
-
being read, then this particular file is
being decrypted, the decrypted chunk is
-
appended to some buffer in memory, the ID
of this chunk is incremented and this
-
whole process repeats. So essentially what
this function does is to load the part of
-
files one by one, decrypt them and append
them all together. Now before I talk a
-
little more about the encryption here,
let's talk a little bit about the
-
encryption key because there's something
interesting here. So this is the
-
encryption key used there. A seemingly
random English string. We thought: "does
-
it mean anything in Korean?". It doesn't
mean anything in any language, actually,
-
but an interesting thing happens when we
take this particular string to a Korean-
-
English keyboard and we try to type it
while accidentally forgetting to switch to
-
English. So we get this Korean string. And
if we translate this Korean string to
-
English, turns out that it literally means
"pattern encryption" laughter and
-
applause. Thank you. laughter* OK, so we
decided to look a bit deeper now regarding
-
the encryption itself. We saw a lot of
encryption mechanics inside. Some have
-
some cryptographic artifacts that resemble
the Shahwan algorithm, for instance, and
-
all kinds of other stuff. We basically
didn't really bother understanding this
-
whole mechanism very deeply because we
were interested in the decrypted pattern
-
files which we could simply dump from
memory and that's what we did. And after
-
dumping this from memory and comparing the
two signature files one to another we can
-
actually see a similarity in the header
and if we scroll a little bit down we can
-
also see that there is quite much of a
similarity in strings. Actually there is
-
more than 90 percent match on the strings
in those two files. And the difference is
-
probably due to the version of those
pattern files. Now that's not the end. We
-
decided to test this thing. So we scanned
a bunch of files with SiliVaccine. They
-
were all detected. We scanned them also
with Trend Micro. They were also detected.
-
But there is something interesting here.
Although they're using the same signatures
-
and same strings the detection names are
totally different. And that is, ladies and
-
gentlemen, suspicious. So it turns out
there's a reason for this and the reason
-
is that SiliVaccine actually renames the
signature names before displaying them to
-
the user. And here is how this works. So
basically SiliVaccine will take a Trend
-
Micro signature name, for this purpose
"TROJ_STEAL-1". It would then replace it,
-
strip it of the underscores and dashes and
then replace the prefix with some kind of
-
word based on a string based on a
predefined dictionary. It will also
-
replace the suffix from a number to a
letter. It will modify the casing, append
-
everything together with dots and this is
how you get a SiliVaccine signature
-
laughter. So looking at all of this it's
interesting to note that the authors are
-
probably trying to hide something. So just
to summarize all of these hiding
-
mechanisms, let's just briefly take a look
at what we've already seen. So basically
-
all of the files or most of the files in
this software are protected with Themida,
-
a commercial protector, which means that
the binary files do not have any kind of
-
string artifacts that allow a researcher
to understand what he's looking at. Also
-
the pattern files are encrypted so we
don't have any string artifacts there. You
-
can't understand from those signature
files what you're looking at. And finally,
-
the malware signatures are renamed in real
time, so it means that even in real time
-
you cannot tell what was the original
signature or where it came from. So
-
essentially the user and a researcher
won't have any way of knowing that this
-
product is using the engine of Trend
Micro, which is puzzling. So, moving on -
-
let's talk about more of the fishy things
that go inside of this product. Namely,
-
while analyzing it, we've seen a lot of
the following instances of this string,
-
"Mal.Nucrp.F", and we realized that, based
on its format, it's probably some kind of
-
a signature name. So we decided to
understand what it was. We ran our
-
algorithm in reverse and we get the
following detection name - "Mal_NUCRP-5".
-
But what's the deal with the signature,
why does it even stand out from the other
-
ones? Well, here are two instances where
this particular signature name is used. So
-
here you can see actually that what
happens with this signature is that a file
-
is being scanned to detect if it's
malicious or not. Then, if it was found to
-
be malicious, its detection name is
compared against the string and if that's
-
the case, then SiliVaccine will simply
ignore this file laughter, which is
-
suspicious laughter. Now, of course, we
wanted to test this thing so we ran 6
-
files that were supposed to be detected
with this particular detection name. In
-
Trend Micro they were all detected. Then
we decided to run them in SiliVaccine and
-
nothing was detected laughter. And
actually, this is quite surprising because
-
we did a little bit of QA on this and it
turns out that for the most part it's
-
okay. But then in one instance they made a
typo and in the white list it's something
-
called "Mal.Nurcrp.F" laughter which has
no equivalent in Trend Micro's engine,
-
which begs the question: WTF is "nucrp"?.
And according to Trend Micro's
-
Encyclopedia, which is a thing apparently,
"MAL_NUCRP-5" is described as some kind of
-
a signature related to some old malware
named "NUWAR", "TUBS", "ZHELAT". We
-
checked all of them. They have no relation
whatsoever to North Korea. But deeper
-
inspection of this signature name reveals
that actually this "mal" prefix you see
-
right here means that this is a generic
detection that flags files based on some
-
heuristic which, in essence, might detect
a whole spectrum of files. So
-
unfortunately, based only on this
information, we cannot know what malware
-
was exactly detected here or really if it
was malware at all. But we can still
-
speculate on why this whitelist thing was
done. And for one, the most obvious
-
speculation would be that there is some
kind of an existing North Korean tool
-
installed on citizens' computers and the
authors didn't want to trigger an alert
-
about it being malicious. It's also
possible that the authors wanted some
-
option to develop such a tool in the
future and they inserted this signature in
-
order to conceal this future component
with this particular whitelisting
-
mechanism. It's also possible that since
the authors used a third party engine, the
-
Trend Micro engine, that this signature
mistakenly detected one of SiliVaccine's
-
original components as malware, which they
clearly wanted to avoid. And of course
-
it's also possible that this whole thing
is some kind of an idiotic false positive
-
management fix. But I would say this is
unlikely. All right - let's move on and
-
talk about the kernel side of SiliVaccine.
And remember: SiliVaccine has three kernel
-
mode drivers, but actually only two of
them are utilized, SVfilter and
-
SVHook.sys. So let's focus on them. And we
started snooping around and looking at
-
these drivers. And the first thing we
noticed is some fishy stuff like the fact
-
that its entry point resides in the relog
section and that it's supposedly packed
-
with some kind of a packer called
"BopCrypt" which we never heard of. And we
-
looked around "BopCrypt"; turned out this
is an old Russian PE packer that
-
supposedly contains some common protection
features such as anti-debug measures and
-
polymorphic code. Now this is not really
good news when dealing with the kernel
-
driver because who wants to debug
polymorphic code into kernel. So we
-
thought: wait a second, before we dive in
and do all of this stuff maybe we can
-
actually find some kind of an answer by
looking at this file again from the
-
outside. And turns out that our answer was
right there and our answer is 42
-
laughter. Actually it's hex42. So
evidently, this whole crazy protection
-
scheme here is that the text section that
contains the actual driver is sort with a
-
single byte of the value 42 hex. So with
this insane protection mechanism which we
-
were able to bypass we were able to look
at the drivers themselves and the first
-
one of them, SVfilter.sys - I remind you
that this is a file system filter driver -
-
this is loaded and utilized by SVDealer.
This is the real time scanning component
-
and it has two main functionalities. One
is to actually scan files upon access so
-
it would intercept any kind of activity
with the file system and it would take the
-
underlying file and would issue it to
SVDealer to conduct a scan on it and also
-
it's actually used to protect the
antivirus as binaries themselves to avoid
-
any kind of malfunction against them by
the user. And it really took us quite some
-
time to realize that these are the only
two things that this driver does because
-
the code for them is really a mess. And
I'm going to save you some time and
-
explain the flaw of this driver by
simplifying it a little bit. So this is
-
how SVfilter.sys works in a nutshell. The
first action it does is waste time
-
laughter. So it does a lot of redundant
checks that seem to have no effect on this
-
code whatsoever. Then it moves on to see
if the file scanned here is actually
-
binary related to the antivirus itself. Of
course if it is done it will deny access
-
to it. Then it moves to the very important
action of wasting a lot more time
-
laughter by doing what seems to be
pretty much garbage code. And finally at
-
some point it will take the file, it will
scan it and if the file seems to be
-
malicious then it will deny the access to
it. Otherwise it will allow the access. So
-
this is pretty much everything to say
about SVfilter. There was another driver
-
called SVHook.sys which is utilized by the
main GUI component, SVMain.exe. You look
-
at this name, you think, yes, it probably
hooks stuff. No - it doesn't actually hook
-
anything. It's actually used to query some
kind of process object data from the
-
kernel and really it's quite of a
confusing driver because it seems to have
-
like 13 ioctls. Only 3 are ever used and
it's highly, highly buggy. There's a lot
-
of bugs there. So for instance, we've seen
the following function where there's an
-
ioctl issued to this driver and it really
seems that those two components, SVMain
-
and SVHook, were really developed by two
different developers. So here we can see
-
that this programmer who wrote this
particular ioctl call actually used a
-
buffer of size 12. Now you would assume
that those two developers have agreed that
-
this should be the buffer size, right?
Well, evidently the second developer was
-
not really notified about this and in fact
checks explicitly that the buffer size is
-
12 and if that's the case nothing happens
laughter. Which really is a piece of
-
shit code that does nothing laughter. So
while looking into this, we tried to dig a
-
little bit deeper and understand why those
bugs happen and we think we have an
-
answer. So just strolling around we see a
lot of this. If you look at this you
-
realize that you're looking at a lot of
debug prints used by the author and you
-
see that one of the parts of the strings
referenced here is "sub_00something" which
-
is an IDA-auto-generated name. Which to
me, ladies and gentlemen, seems like
-
instead of looking at authentic code, we
were in fact reverse engineering a
-
reverse.engineered driver. So essentially
what happened here is that the developer
-
of SVHook took some driver, decompile it,
copied the code and added a bunch of debug
-
prints in order to try to understand what
he was copying and it seems he didn't only
-
fail to understand it but he also forgot
to remove this trail of debug prints. That
-
demonstrates his elite coding skills. So
we are nearly at the end and we talked
-
quite a bit about the technical parts here
but to get the full picture I think it's a
-
good idea to look at the development story
behind the software. So in essence, who is
-
behind SiliVaccine? Well, to tackle this
question we resorted to some version info
-
that can be found inside the antivirus as
binaries. And there we found some version
-
manifest that pointed at several
companies, the first one of which is
-
called PGI (Pyongyang Guangdong
Information Technology). It seems to be
-
some kind of a North Korean establishment,
a known one, that specializes in network
-
security software. But really the more
interesting company that we found there
-
was called "STS Tech-Service" which is
really this kind of shady company that has
-
no trace of its activity online. We
couldn't find any kind of artifact that
-
shows what this company does or what is
its main field of occupation. So we still
-
can answer some questions about STS tech
service. For instance we can say that STS
-
tech service is highly likely based in the
DPRK North Korea and that is due to this
-
brochure you see here on the screen which
is taken from a trade fair that took place
-
in Pyongyang back in 2006. And in this
particular trade fair this company, STS
-
Tech-Service, they participated. We
contacted the organizers and they actually
-
confirmed that STS Tech- Service did come
from North Korean side. Still, some
-
questions remain. Is that a private
company in North Korea or is that even a
-
thing? Is that a government entity? Is
that the same thing in North Korea? We
-
don't know. Actually, another source told
us that this company might be a
-
subdivision of the KPA (where KPA stands
for Korean People's Army), but we have no
-
way of corroborating this. And you
remember that Trend Micro stated that
-
their engine could have been leaked from
third party. Could that third party be
-
this company? Well we don't know actually,
but what we did see and which was really
-
interesting is a particular connection
between North Korea and Japan that repeats
-
throughout this whole research so for one
we've already seen that SVKernel is
-
basically some kind of modified version of
Trend Micro's engine. But then we've also
-
seen that STS Tech-Service at some point
cooperated with a company called Silver
-
Star Japan on a particular application. As
a matter of fact it not only cooperated
-
with them but also with another company
called Magnolia which also resides in
-
Japan. Actually Silver Star and Magnolia
reside in the same address in Japan, which
-
is quite interesting. And then in a
particular instance all of these three
-
companies - Magnolia, Silver Star and STS
Tech-Service cooperated with the KCC, a
-
very famous North Korean research
establishment, the Korean Computer Center,
-
on another application. And it's important
to say that while we can be very easily
-
drawn to some conclusions here and
speculate on some very wild scenarios,
-
especially given the fact that North Korea
and Japan are not friends, we need to
-
remember that this is just a crazy web of
connections that we unraveled here. And
-
actually we cannot say much about this
other than pointing out the connections
-
themselves. Still I can say that we did
find some traces of maliciousness in this
-
whole package and at this point we
thought: all right, we are done with the
-
research; could it be that there is no
malware or backdoor here? Well, it turns
-
out that if we look back on this e-mail
sent by this supposedly Japanese engineer,
-
Kang yong hak and reinspect the installer
provided in this particular email, then
-
actually it has no metadata. And that's
not surprising because this installer is
-
in fact this file is in fact a self-
extracting archive which contains the real
-
installer of SiliVaccine. But then it also
contains another file called "SVpatch4.0"
-
which - well, OK. But when you look at the
metadata you see it's supposedly related
-
to Microsoft automatic updates which is,
again, highly suspicious laughter. Now,
-
we decided to look deeper in this file and
it turns out that actually this file is a
-
signed binary. And if you look the issue
up on Google we come to a Kaspersky report
-
about the Darkhotel APT. Very alarming.
And then we decided to dig deeper and
-
analyze this file. So we did some
analysis. We realized that this is
-
actually the stage one malware from a
known campaign called Jaku uncovered by
-
Forcepoint in 2016. Now what is Jaku? Jaku
was an ongoing botnet campaign, it
-
targeted mainly North Korea and Japan. And
while it infected a lot of victims the
-
later stages of the malware - stages 2 and
3 - were only used against a select group
-
of individuals with North Korea and
Pyongyang being the common theme between
-
them. Now another interesting connection
that was outlined by Forcepoint is between
-
Jaku and Darkhotel which is really further
evidence to this kind of an interesting
-
connection on top of what we saw with the
certificate used previously. Now who could
-
be the target here? It could be the case
that every SiliVaccine installation is
-
bundled with this malware, but we don't
think so. We actually think that the
-
target was Martin Williams who deals
vastly with North Korea. And it is
-
possible that this particular malware was
used against him. So this is pretty much
-
the end and I would like to, before I let
you go, summarize everything that we've
-
seen in this talk. Let's look back and see
those things. So for one we have seen that
-
SiliVaccine has been illegally using Trend
Micro's engine and it was not a one-time
-
thing. It has been done at least two times
and probably over multiple versions and
-
for several years. Then we've also seen
that the authors of SiliVaccine tried to
-
conceal the fact that they used this
engine with some interesting mechanism.
-
Then we've seen that there is an explicit
whitelisting of a particular signature and
-
that the installation of SiliVaccine comes
bundled with the malware called Jaku. Now,
-
while having these understandings we still
have some unanswered questions. For
-
instance, we've seen that there are some
artifacts that point at the fact that the
-
code of SiliVaccine might have been
recompiled with some other optimizations
-
that were not in Trend Micro' engine in
the first place. So, having said that, how
-
did the SiliVaccine authors obtain such an
access to a proprietary resource? We have
-
no idea. Also this white-listed signature
- we cannot say what it represents. It's a
-
heuristic signature so we cannot really
tell if it was trying to whitelist a
-
malicious tool or a benign software. It's
not very clear. And then also the Jaku
-
malware. Since we only have one instance
of this particular software from 2013 it's
-
hard to say if it's bundled with all
versions or only with this one. And while
-
I can't answer all of these questions
concisely I do want to point out that
-
throughout this research we've seen a lot
of effort done to develop this particular
-
product and through this effort we've
stumbled upon quite many illegal and shady
-
practices employed by the DPRK to develop
their own homebrew software. A software
-
that, remember, maybe sometime in another
time and in a perfect world could have
-
been totally legitimate. And with that in
mind I would like to thank you for your
-
attention and hope you enjoy your time at
CCC.
-
applause
-
Herald: Thank you, Mark, that was
wonderful. We have plenty of time for
-
questions and we have two microphones. One
is in the middle of the room and one is
-
sort of outside of the stage. So please
queue up if you want to ask questions. And
-
we already have a question on the
microphone 1.
-
Audience member 1: Do you have any idea
why they chose Trend Micro over any other
-
engine?
Mark: Excuse me, could you repeat the
-
question and raise your hand, because I
didn't see you?
-
Audience member 1: Do you have any idea
why they chose Trend Micro and not any
-
other engine, like an open source engine?
Mark: Do I have any idea of Trend Micro
-
tools is what? I'm sorry.
Audience member 1: Do you have any idea
-
why Trend Micro was chosen by them?
Mark: Ah, why Trend Micro.
-
Audience member 1: In comparison to
anything else?
-
Mark: Actually I have no idea. I really
don't.
-
Audience member 1: Thank you.
Mark: If you know, then tell me, please.
-
laughter
Herald: microphone 2.
-
Audience member 2: So have you looked at
the fact that this antipiracy is a .exe.
-
So it runs on Windows but all of North
Korea runs with Red Star OS which is a
-
Unix.
Mark: Well, as far as I could tell from
-
people I discussed with who do know a few
things about North Korea actually Red Star
-
OS is not the most common operating system
there. In fact it's barely used because,
-
well, to say it shortly, it's shit but
they do use what seems to be some kind of
-
Chinese versions of Windows XP and Windows
7. So this is intended to run on these
-
operating systems.
Herald: Thank you. Another question from
-
mic 1.
Audience member 3: How did you get the
-
2005 version of the antivirus?
Mark: Come to me later and I'll tell you.
-
laughter
Herald: Mic 1, please.
-
Audience member 4: Yeah I just wanted to
know if you checked that the Jaku malware
-
was not part of this whitelist program.
Mark: Oh yes, we checked it. Actually this
-
was not the white-listed signature. It was
actually not detected by SiliVaccine, but
-
it was also not detectable by Trend
Micro. It was not detected by anyone
-
actually so it was not the white-listed
signature.
-
Herald: Thank you. That's all. Thank you,
Mark. Thank you for the amazing talk.
-
applause
-
35C3 postroll music
-
subtitles created by c3subtitles.de
in the year 2019. Join, and help us!