Remote infection of XML documents by Rajaat Written in Januark 1900 ;-) Intro In the past month or so, I've been translating some Perl snippets I've written to VBScript, to show some friend how to do some simple XML parsing. After that he has written a VBScript virus that could be jumpstarted from an XSL stylesheet (hi to Ruzz!). During writing these little fragments of code an idea occured to me that VBScripters can use to let their code be remotely executed by a XML or HTML document using CSS or XSL. In this article I hope to present some techniques that will force the AV to have web scanning capabilities into their browser. Ideally, the VBScript will never leave your homepage, but documents gets referenced to it. Prerequisites In the examples listed in this article you'll need to understand the relations between XML and XSL, so I recommend you to take a look at the web pages listed at the bottom of this article before even trying to understand how it works. Some of the tricks only work with IE5, since that is the only web browser known to me that currently supports XSL. Linking to VBScript from XML using XSL If you load an XML document into IE5 it will normally be displayed in tree form, of which the branches can be expanded or collapsed by clicking at the [-] and [+] (like you would with the normal Windows explorer working in Tree mode). A typical XML document looks like this: A simple appending COM infector, written in Sphinx C-- (written by Peter Cellik). A mcb tsr semi-stealth polymorphic fast-infecting appending COM & EXE infector, of which the largest part is written in Borland C++ 3.1 (not in Pascal, like Eugene Kaspersky assumes). A standard bootsector virus with read/write stealth. If you would cut and paste the above piece in a file using .XML for extension and you would look at with with IE5 you will see the aforementioned tree structure. Now you can imagine XML would be a very nice way to store articles etc for displaying on the World Wide Web, if it only could present itself in a more readable way. The answer to this is XSL, a method to transform XML documents. XSL stylesheets are normally not part of a XML document, but are referred from it. With XSL you could choose to write a HTML in which the first column shows the virus writers handle, and the second contains a list of names of viruses he has written (which you can click to take you to the AVP website for more info). In fact, big companies use this technique is to format all kinds of information. An XSL stylesheet may reside anywhere on the internet, as long as the user that views the XML document that refers to the XSL stylesheet can access it (must be online) it will be used. This is where you come in play. What would happen if an XML document refers to a XSL stylesheet that is on your homepage and - besides the standard formatting HTML and XSL tags - also holds a piece of VBScript code that will add a reference to itself to other XML documents that can be found? The XML documents appear to be clean, as there is no viral code included, but loaded from a browser it will get started. Let's add such a reference to the example shown above. Insert the next line right below the : Now we must create a stylesheet in the same directory as we created the XML document. In the example I will call this one vinfo.xsl. A dull example

Virus Writer info (mouseover this heading activates VBScript)

(group: )
Now when you load the XML file into IE5, it will automagically use the XSL stylesheet to format the data into a nice table. If you move with the mouse over the heading tag, the VBScript gets executed and will display a lame text. Another nice touch is that people cannot simply look up the VBScript code by right clicking on the page from within IE5, it disallows the page to be viewed in source form if it is processed by a XSL stylesheet. Now try adding some of your own stuff in it, like running Outlook (but where must it get the source from to mail it? You need to get it from the web yourself) or using the FileSystem object to "infect" other XML document by adding a reference to a XSL stylesheet that is on your homepage. Be inventive, I am sure the AV will appreciate it :-) Rajaat