tumblr hit counter

PandaLabs Blog Everything you need to know about Internet threats

Deobfuscating malicious code layer by layer

Article written by David Sánchez Lavado

This post explains how to analyze the malicious code used in current Exploit Kits.

There are many ways to analyze this type of code, and you can find tools that do most of the job automatically. However, as researchers who like to understand how things work, we are going to analyze it with no other tools than a text editor and a Web browser.

My goal is to lay the basis for you to learn how to remove the different obfuscation layers that a malicious JavaScript code may employ. I will teach you how to remove those layers step by until you get to the last layer where the logic that exploits the relevant vulnerability is found.

IMPORTANT: I recommend that you perform this type of analysis on a virtual machine on its own isolated network in a laboratory dedicated exclusively to this type of research to avoid unwanted infection.

BASIC CONCEPTS

Generally speaking, malicious code is used to exploit vulnerabilities in Web browsers and PDF readers like Adobe Reader or Foxit. This code is usually written in javascript and has various layers of obfuscation. Code obfuscation techniques are generally used to make code difficult to understand for researchers, avoid detection by signatures or bypass automated scanning tools. The way they work is really simple: each of these layers calls other functions that obfuscate code that will become part of the next layer and so on and so forth until the final code.

The final code is normally divided into two parts. The first one aims at detecting the Web browser version and the plug-ins installed on the victim’s computer (like Adobe Reader, Apple Quicktime or the Java virtual machine). The second part selects the vulnerability to exploit according to the information gathered in the first part.

CODE ANALYSIS

The image below is a screenshot of the malicious code to be analyzed in this article.

As you can see, the code is made up of several HTML objects. However, if you look closer you can actually identify different things in these objects: First: The value of the id attribute for each of these objects has the format “<number>+CytobimusubekUda”, where “<number>” is a number from 0 to 1230 in consecutive order. Second: The value of each object is an apparently meaningless string of characters of approximately the same length, and the word Add repeated several times inside it.

All this seems to indicate that the id attribute is used as an index (look at the consecutive numbers) in a cycle to parse all HTML objects and deobfuscate their contents to create a new code layer. Let’s start analyzing the code.

FORMATTING THE CODE

The first thing I usually do when examining a javascript code is use the Format Code option in Malzilla. This option formats the code as if it had been written with a program such as Visual Studio. Although simple, this is a very important step as many times the code is not properly formatted and is hard to understand.

You could also do this manually, line by line, but you risk making a mistake and it will take you too long. For example, the malicious code that we will analyze here contains almost 600 lines of script code and HTML code.

Malzilla is an excellent utility to analyze malicious code automatically. However, in this article we intend to analyze this malware strain manually.

Unformatted code (before using the "Format Code” option)

Unformatted code (before using the "Format Code” option)

Well-formatted code (after using Malzilla’s “Format Code” option)

Well-formatted code (after using Malzilla’s “Format Code” option)

THE TOOL

The next step is to copy the well-formatted Javascript code to the text editor to be used in the analysis. Any text editor with the following basic options should be enough:

  1. JavaScript code identification: It will help you view the code and quickly detect Javascript functions.
  2. String search-and-replace: This will help you avoid mistakes when replacing the names of functions and variables.
  3. Windows Tabs: This is optional. Tabs will let you work very quickly when analyzing the code of various files.

FINDING THE ‘START’ FUNCTION

The sample currently has 96 lines of javascript code and more than 500 lines of HTML code. You will reduce the number of lines as you remove the obfuscation layers. The first thing you have to do is determine the javascript code that runs when the browser loads the malicious Web page. Then you have to analyze all the other functions as they are run.

The first steps to take with every function are the following:

  1. Simplify the code to analyze
  2. Rename the functions and variables for the code to be easier to understand.

To do that, first check the HTML code, and if there is no HTML object that calls a javascript function, proceed to analyze the code found between the <script> and </script> tags. There you must find the code that does not belong to a function definition, as that will be the code that runs automatically when the Web page is loaded by the browser.

The screenshot below shows that code between lines 81 and 89 (both included). You can also see that the HazakeduhaQurenepenus() function (85) is the first one to run (the previous three don’t perform any important actions). Therefore, this is the first function that you must analyze.

Code run on loading the page (red rectangle)

Code run on loading the page (red rectangle)

SIMPLIFYING THE CODE AND MAKING IT EASIER TO UNDERSTAND

Simplifying the code and making it easy to understand is one of the most difficult yet important tasks. It involves studying almost every instruction in the javascript code, and modifying them to create a code that is easier to understand and analyze.

VERY IMPORTANT: When modifying the code, don’t change the final result that would be returned by the original code.

As previously said, start with the HazakeduhaQurenepenus() function. This function looks like this:

“HazakedubaQurenepenus()” function before the analysis

“HazakedubaQurenepenus()” function before the analysis

In the code, pay special attention to the functions that are not part of the javascript API, that is, the functions programmed by the user. You have to resolve the value that these will return in order to analyze the function.

In the code above, the factor to resolve is the PypiwIgo() function that has the following code:

If you take a look at it and you are familiar with the javascript language, you will realize that the function will return the getElementById string every time it is called. With this in mind and knowing that the DeqesedaDakonyqev variable refers to the document object, you can make the first change for the code to be easier to understand. The resulting code will look like this:

“HazakedubaQurenepenus()” function after the analysis

“HazakedubaQurenepenus()” function after the analysis

You may have noticed that I have changed the name of several variables and of the analyzed function itself to func_decrypt_01. This may seem a little bit bold, but after having analyzed many functions like this you become capable of recognizing certain code structures at a glance.

Your next objective is to resolve the value to be returned by the function in the buffer variable. To do that, you must separate the function from the original code and run it independently. Prior to that, you must make sure that the function to analyze will not need any external values or any other piece of data calculated by any other function of the assigned code in any global variable. Otherwise, you will have to first calculate that value and then replace it in the code to isolate. This is very important as otherwise you will probably not be able to run the code separately: the Web browser will show an error when loading the page and it will not be possible to run the code or it simply won’t behave in the same way as if it had been run with the entire malicious code.

Let’s see this with an example in the code we are analyzing. The following instruction refers to an external value in the DasuRokyduconiwidy HTML object.

string_01 = document.getElementById(“DasuRokyduconiwidy”).innerHTML;

The resulting value is assigned to the string_01 variable. Since this variable is used inside the code, you must resolve its value. Otherwise, if the variable was only used to confuse the user, you could eliminate it from the code.

The technique of using data in HTML objects and referring to it from the javascript code is frequently used to obfuscate code by splitting it into parts. This serves to bypass the automatic analyses performed by certain tools unable to interpret the connection between the javascript and the HTML code.

This anti-analysis technique is also used by malicious PDF files. The technique involves making calls to the Adobe PDF API’s javascript functions, which cannot be interpreted by many analysis tools.

The first thing you need to do is find the DasuRokyduconiwidy object. Once you find it, assign its value to the string_01 variable in the script code that you have created, and replace the return buffer instruction with a TEXTAREA object that will show the content of the buffer variable once the new code is run in the Web browser.

Value of the DasuRokyduconiwidy object and line of code to replace

Value of the DasuRokyduconiwidy object and line of code to replace

The screenshot below shows the simplified code and how the “return buffer” instruction has been replaced with a textarea object created at runtime.

New code created to view the result of the buffer variable

New code created to view the result of the buffer variable

Once you have the code, open it with the Web browser to see the function result.

Value of the buffer variable

Value of the buffer variable

As you can see, the returned result is a string comprising a sequence of names of javascript API functions. Once you have resolved the value obtained when calling the func_decrypt_01 function, rename the GuzoZaq variable. This is the variable that the return value is assigned to. For example, call it concat_func_string, and then assign to it the value obtained in the textarea object. The code will look like this.

concat_func_string variable with the value already resolved

concat_func_string variable with the value already resolved

Continue analyzing the code run when loading the Web page. The next function to analyze is NupUr(). This function calls function HaynubOguf(), which you must resolve before continuing to analyze the code. HaynubOguf( ) is a very simple function that returns the substr string, which is the name of a javascript function whose job is to obtain a substring from a string. Therefore, rename the HanynubOguf() function to func_substr(). The NupUr() function will look like this.

NupUr() function to analyze

NupUr() function to analyze

Now that you have “resolved” the different parts of the function code, make the code more readable. This involves resolving the names of all the functions in brackets from inside out.

As you can see, the code uses the concat_func_string variable. If you remember, this variable refers to a string made up of the names of multiple javascript API functions. Also, note that the code uses the substr variable as well. This indicates that part of the string will be extracted to obtain the name of the function to be later on used in the code.

Original function Resolved function
[func_substr()](63,14) .substr(63,14)
[concat_func_string.substr(63,14)] getElementById
[func_substr()](1736/56,585/65) [func_substr()][31,9] → .substr(31,9)
[concat_func_string.substr(31,9)] .InnerHTML

The result is the following code:

Resolved NupUr() function

Resolved NupUr() function

As you resolve more and more functions you will be able to discover the actions to be taken by the rest of them simply by taking a glance at their code. This is because you’ll have already resolved many unknown values. This will help you analyze other functions more quickly and eliminate obfuscation layers more easily.

Finally, let’s analyze the MivoJaqugutec() function:

Unresolved NivoJaqugutec function

Unresolved NivoJaqugutec function

At first glance, the first thing that you can identify in the code is a cycle that runs through all of the HTML objects, storing their values and concatenating them in the PofUhicehofudilysuwe variable returned by the function once the cycle ends. Well, with everything you have learnt so far you probably know what to do. Separate the function from the original code, resolve the unknown values and rename its variables for the code to be easier to understand. Your objective should be to determine the value of the PofUhicehofudilysuwe variable in the return instruction.

Code used to get the value of the PofUhicehofudilysuwe variable renamed to buffer

Code used to get the value of the PofUhicehofudilysuwe variable renamed to buffer

Once you run the code on the Web browser you’ll get the following result:

Similarly, transform the other functions in the code that’s left to analyze. The final result is quite interesting: you’ve gone from 96 lines of javascript code and some 500 lines of HTML code to just 2 lines of javascript code with the eval() and unescape() functions.

These 2 functions normally indicate the execution of a new obfuscation layer. Have you reached your final objective yet? Is this the final layer responsible for triggering the vulnerability? Well, let’s see what it contains.

ACCESSING THE FINAL CODE

The last 2 lines of code include the payload variable, which refers to an encoded, 55,496-character-long unicode string. After running its content with the eval( unescape(payload) ) instruction you’ll get to the last layer in the malicious code.

In this last part of the article we will only analyze the generic parts often found in malicious codes.

The following two screenshots show a series of instructions that are often used both in legitimate and malicious code, although with very different purposes. Whereas they are used in legitimate code for design purposes, in malicious code they are used to obtain information about the victim’s environment and exploit the most appropriate vulnerability.

As you can see in the two screenshots above, the programmer has used the userAgent method of the navigator object to identify the Web browser used by the victim. In the case of Internet Explorer they check to see if the version is lower than 6.

They also try to identify if there are any plug-ins installed on the browser.

In this code the programmer has decided to create an object identified by the CLSID CA8A9780-280D-11CF-A24D-444553540000 in the Pdf1 variable. Although the name of the variable gives a hint as to what object the programmer wants to create, let’s make sure. Use the regedit.exe tool to find the CLSID key in the Windows registry.

Our suppositions were true: The CLSID key refers to the Adobe Acrobat/Reader ActiveX control. The programmer has created this object to find out if the victim has Adobe Acrobat or Adobe Reader installed (and what version they are using), and select the malicious PDF file that can exploit one of the vulnerabilities in the detected version.

They use the GetVersions() method to find out the version of the Adobe program installed on the victim’s computer, as seen in the first instruction in the code below:

The last part of the code is used to select the most appropriate PDF file to exploit the vulnerability. If the value of the lv variable is greater than or equal to 800 (which possibly identifies version 8), the code will call the fghjdfgxbz function passing the string “d0456d.pdfas a parameter. Otherwise, it will pass the “07dd5d.pdfstring as a parameter. The fghjdfgxbz function simply creates an IFRAME object at runtime that points to the value passed as the parameter. As a result, the Web browser will open a malicious PDF file designed to exploit an unpatched security vulnerability.

To sum up, in this article we have explained how to analyze and deobfuscate the layers of one of the malicious codes currently used in exploit kits, with just a text editor, a Web browser and some knowledge of JavaScript and HTML. We have also analyzed part of the final code to show you some of the methods used to detect the Web browser and the plug-ins installed on victims’ computers. Happy hunting!!

Post to Twitter

  • (12) Comments

R.I.P. Steve Jobs

As you all probably know, Steve Jobs passed away yesterday. These are sad news, and everyone is talking about him and his life as he has achieved so many fantastic things. Social Networks are flooded with quotes from Steve, and all of us have only good words to talk about him.

But as you can imagine, there are always people trying to take advantage of these situations. Some cybercriminals created a Facebook page called “R.I.P. Steve Jobs”, and innocent people have been joining by the thousands. In just a few hours it had more than 90,000 fans. Criminals published a link using the popular shortener service bit.ly, where they said that Apple will be giving away 50 iPads.

Of course all the stuff is a scam, and once you click to that URL (which ended with “restinpeace-steve-jobs”) you were redirected to a place where you are offered a number of gifts, such as iPads, Sony Bravia TVs. For that they ask for your information, such as Full Name, Address, Phone Number, e-mail address, etc.

Facebook has closed the page and bit.ly has done the same with their link. There are some really interesting statistics that I’d like to show you. Out of those > 90,000 fans, 25,669 clicked in the link provided by the criminals! This is the breakdown of victims (clicks) per country:

We’ve been doing some reseach on this attack, and it turns out that the very same criminal has been doing this kind of ‘work’ for the last weeks. He recently did a similar thing with the iPhone 5 and with the 10th anniversary of the 9-11. We have to put these guys behind bars, otherwise they will continue with their business.

Post to Twitter

  • (2) Comments

Greetings from Barcelona

Virus Bulletin 2011

This week I am in Barcelona, where the Virus Bulletin conference is taking place. I will be attending some preVB meetings, such as the AVPD (AntiVirus Product Developers) hosted by ICSA Labs and the WildList meeting, where we’ll talk about some future plans.

Hesperia Tower Hotel

All the meetings and the conference itself will take place at the Hesperia Tower Hotel, a nice place with a huge conference center, which looks promising.

The Virus Bulletin conference this year will be covering many topics, from social networks attacks to all kind of cybercrime. There are a number of highly interesting talks, you can take a look at all of them in the programme.

At the same time the conference is taking place, a major event will be happening: Table Football World Championship 2011. As usual it is sponsored by our friends and competitors from GData, and 9 teams from all around the world will be facing each other. Pedro Bustamante, our table soccer star, won’t be attending this year, but we’ll try to do it as well as we can. Sergio Lara, from the lab, will be with me in this fight. I’ll let you know how we perform, this is the schedule for it:

Post to Twitter

  • (0) Comments

Xandora presented in the next Hack In The Box conference

Hack In The Box

In a couple of weeks in Kuala Lumpur, Malaysia, it will take place this year edition of the security conference Hack in the Box. This is a great conference I had the pleasure to talk in last year. This year Panda Security will be also participating, this time it will be KaiJern Lau, our Technical Director for Panda Security in APAC, the one in charge of it. He will talk about Xandora, a tool for analyzing the behavior of Windows PE-executables with special focus on the analysis of malware. Xandora was created by KaiJern and has proven to be an excelent tool. We use all the information gathered by Xandora in our Collective Intelligence system, and several antivirus companies are suscribed to it and use it to obtain both information and malware samples. If you want to know a bit more about this you can visit Xandora’s web or even better listen how it works if you can attend his talk “Malware Sandboxing the Xandora Way.”

Post to Twitter

  • (0) Comments

The good all scams: new countries, same tricks

This blog post could have been titled also as “A trip from Nigeria to Libya”. Perhaps one of the best-known email scams is the Nigerian letter scam and its many variants. The http://pandalabs.pandasecurity.com/es/wp-admin/post-new.phpinitial email tries to convince recipients that there are several million dollars which cannot legally leave Nigeria unless transferred to a foreign account. The fraudsters offer a commission to the recipient of the email for helping them get the money out of the country, but ask for an advanced fee from the intended victim (under a myriad pretexts depending on the particular variation of the scam). However, the whole operation is a fraud, and you will lose any money you pay.

These kind of scams are among the first ones in the Internet era, dating back to the 80′s (yeah, that’s a long time, where many people haven’t heard yet about the Internet.) And they work, they will be always there as long as there are people falling in these old school tricks. The reason to use Nigeria was because at that moment there was a big political mess there. Nowadays the situation is better, with their economy being one of the fastest growing in the world. It doesn’t matter, as people doesn’t know that unless it appears in the news… and that’s what some cybercriminals are thinking, as there are some other countries that lately have appeared in the media. As in the case of Libya. So they just have changed the country, added a link to the Wikipedia about a Libyan General that has dead recently and you have yet another scam. This is the message that is circulating now:

http://en.wikipedia.org/wiki/Abdul_Fatah_Younis
Pls help me safegaurd this
$42M USD currently loged in a security company in SPAIN by my late father Abdul Fatah Younis, who was arrested and killed by rebel force (NFSL). I will give you more details upon ur acceptance.
Ahmmad Younis
Libya

You have to agree that 42 million dollars is an important amount of money, would you answer this message? ;)

Post to Twitter

  • (1) Comment

Ransomware posing as Microsoft

We’ve found yet another malware piece, this time it is a ransomware to take some of your money. Once you get infected (you can receive it in a number of different ways, most likely via spam messages and P2P), your computer is restarted. What for? Well, the malware installs itself to run every time your computer is started. And at the very beginning, just after you log in, it will show you the following screen:

With my English an Spanish knowledge I was able to understand what it was saying in German, but I translated it just in case. The threat is clear: your Microsoft Windows authenticity could not be verified, you need to have it fixed, which is just a 100€ payment. They give you the payment instructions and before saying goodbye they let you know that in case you don’t pay you’ll lose access to the computer and will lose all your data, as well as that the district attorney’s office has already your IP address and that you’ll be prosecuted in case you fail to pay the 100€ in 48 hours.

Well, that would scare anyone that doesn’t know this is a ransomware attack. When you go to the website announced in the previous screen, this is what you get:

Once you enter the code given in the first screen, you are redirected to another web where you can fill all your data, so they can charge you with 100€… to start with. Once you have sent them your data, they tell you you’ll get an activation code within 24 hours when they have confirmed that your credit card is working. Well, for all of you that wouldn’t like to pay anything to these bastards, this is the code you can use to deactivate it:

QRT5T5FJQE53BGXT9HHJW53YT

Doing that your computer will be restarted and the registry key created by this malware (detected as Ransom.AN) will be removed, as well as the malware file. Anyway, once you know you’ve been infected with a piece of malware you don’t know how many you may have there, so it is worth giving a try to our free Panda Cloud AntiVirus.

Post to Twitter

  • (25) Comments

Open Cloud Antivirus

Right after we started Panda’s CI (collective intelligence) project few years back. We decided to provide a community based antivirus program called Panda CloudAntivirus.

When all the good guys trying to improve and to keep the community safe. We notice the bad guys are trying to take the opportunity to “sell” their fake antivirus.

Earlier today, we received a sample which is a rogueware (well know as fake antivirus). They named it “Open Cloud Antivirus”. Looks like for them “cloud” is the way to make money, for now.

After a quick analysis, these are the few screenshots that we manage to capture. If you ever see this image, do not believe it. Close the windows immediately and continue your work.

Full Analysis Report: http://www.xandora.net/xangui/malware/view/028589c3bd57d4ba452360d5432b2c50

Post to Twitter

  • (6) Comments

Anonymous meets real activism? #OpPayPal

All of you know that my main concern regarding Anonymous is the kind of protests they carry on. While they consider a DDoS attack a ‘peaceful protest’ the real thing is that it is a crime. However, it seems we can have some hope: Anonymous has started #OpPayPal and is asking users to close their PayPal accounts. There are a lot of messages in Twitter with the hashtag #OpPayPal, and some users are even publishing screenshots of their just closed account.

The bad news? I’m afraid they will go back to their illegal methods at any moment, and while I’m writing this I’ve just seen that members of LulzSec (related to Anonymous) could be crossing (again) the line:

I say ‘could’ because this could be a fake There is also a message in Pastebin but there is no way to guarantee it really comes fro LulzSec. Anonymous will publish a press release later today, I’ll let you know any updates.

Update, 08:53 GMT

The following release has been published through Pastebin:

Dear PayPal, its customers, and our friends around the globe,

This is an official communiqué from Anonymous and Lulz Security in the name of AntiSec.

In recent weeks, we’ve found ourselves outraged at the FBI’s willingness to arrest and threaten those who are involved in ethical, modern cyber operations. Law enforcement continues to push its ridiculous rules upon us – Anonymous “suspects” may face a fine of up to 500,000 USD with the addition of 15 years’ jailtime, all for taking part in a historical activist movement. Many of the already-apprehended Anons are being charged with taking part in DDoS attacks against corrupt and greedy organizations, such as PayPal.

What the FBI needs to learn is that there is a vast difference between adding one’s voice to a chorus and digital sit-in with Low Orbit Ion Cannon, and controlling a large botnet of infected computers. And yet both of these are punishable with exactly the same fine and sentence.

In addition to this horrific law enforcement incompetence, PayPal continues to withhold funds from WikiLeaks, a beacon of truth in these dark times. By simply standing up for ourselves and uniting the people, PayPal still sees it fit to wash its hands of any blame, and instead encourages and assists law enforcement to hunt down participants in the AntiSec movement.

Quite simply, we, the people, are disgusted with these injustices. We will not sit down and let ourselves be trampled upon by any corporation or government. We are not scared of you, and that is something for you to be scared of. We are not the terrorists here: you are.

We encourage anyone using PayPal to immediately close their accounts and consider an alternative. The first step to being truly free is not putting one’s trust into a company that freezes accounts when it feels like, or when it is pressured by the U.S. government. PayPal’s willingness to fold to legislation should be proof enough that they don’t deserve the customers they get. They do not deserve your business, and they do not deserve your respect.

Join us in our latest operation against PayPal – tweet pictures of your account closure, tell us on IRC, spread the word. Anonymous has become a powerful channel of information, and unlike the governments of the world, we are here to fight for you. Always.

Signed, your allies,

Lulz Security (unvanned)
Anonymous (unknown)
AntiSec (untouchable)

Post to Twitter

  • (26) Comments

Trojan uses Amy Winehouse death

Last week I was talking about how certain cybercriminals used social engineering techniques in order to spread their creations, and today I can show you yet another good example of this, showing how fast these guys react on any news to take advantage of the buzz.  In this case they are using the recent death of the singer Amy Winehouse. The body was found last Saturday, and the very same day the most detected malware URL was this one:

http://removed/103684policia-inglesa-divulga-fotos-do-corpo-da-cantora-amy-winehouse-WVA.exe

The name of the file (in Brazilian Portuguese) says “English Police shows pictures of Amy Winehouse body”. The next day the very same URL was again the top detected one, which shows us how effective these techniques are.  In fact this is not the first time the death of a famous person has been used to propagate malware; for example, when Michael Jackson died we could see the same kind of attacks.

This Trojan is just another banking Trojan targeting Brazilian banks. Once executed it copies itself as “googlepad.exe” and modifies the HOSTS file, so when the users try to visit some of the targeted websites he will be redirected to a fake one, where their credentials will be stolen. It does not only target financial companies, but also Hotmail users.

The Trojan is detected as Trj/Banbra.GBW.

Post to Twitter

  • (1) Comment

Brazilians, banking Trojans and social engineering

Maybe you don’t know this, but many guys here in the lab can tell you where a banking Trojan is from just taking a look at it for a few seconds. There are a number of different banking Trojan families, but it’s really easy -once you have analyzed thousands of them- to group them by origin. In the case of the Brazilian ones, there are a number of tips that can be used:

- Size of the file (yeah, I know this is pretty basic but the size of those Trojans is way bigger than the average)
- Programming language (Delphi)
- Text strings (usually Brazilian or South American banks)

And I’m only talking about the binary file. If we take a look at the distribution methods, we can obtain more leads. Unlike the rest of the world, these Brazilian cybercriminals don’t use infection kits (MPack, etc.) but only social engineering techniques, which seems to be good enough for them. One of the latest cases we have seen was using the current president of Brazil, Dilma Rousseff, as bait. They usually spread the malware via e-mail in spam messages, or in Internet forums and social networks:

In this case the downladed file is the Trojan Nabload.DUF. Taking a look at the server where the file is hosted, we were able to find one folder with a different file (another Nabload):

My Brazilian Portuguese is not great but good enough to understand they are talking about Juju, Nicole and a video. But who are Nicole and Juju? Using one of Internet’s most powerful weapons, a search engine, we find out who Nicole and Juju are:

Nicole Bahls

Nicole Bahls

Juju Salimeni

Juju Salimeni

asdasdasd

asdasdasdasd

asdasdasdasd

asdasdasdasdas

asdasdasdas

asdadasdasd

asdasdasdasdad

asdadasdasdasdas

adadasdasdasdasd

asdasdadasdasdasd

dadasdsadasdasdsad

Now I know what kind of social engineering is this one ;)

Even though the file was uploaded in April, we found some spam messages distributed in July:

Remember that we are the weakest link in security, and it doesn’t matter how many security measures we do take, there are not -yet- an antivirus for human beings ;)

Post to Twitter

  • (3) Comments
  • Become a fan!


    Panda Security on Facebook
  • -->
  • Blogroll

  • Categories