|
--Boundary-00=_Ojt0JqDqv+O5XTz
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Yoann Guillot and myself have been assessing the security of instant
communication applications for a couple of years.
For quite some time now, we have both suspected that it was possible to
conduct both stealth and massive attacks on popular chat clients such as MSN,
AIM, Trillian or mIRC.
Today, we have verified our intuition by creating an encoder that can make any
shellcode look like a smiley. It is possible to encode malicious shellcodes
in emoticons, leaving exploits indistinguishable from genuine chat messages.
This would make massive attacks against instant messaging applications
impossible to catch by anti-virus, IDS or similar signature based
technologies. Moreover, it is possible to conduct attacks with plausible
deniability.
The potential for mass exploitation is undeniable. We are urging Microsoft,
AOL and other administrators of popular chat networks to ban smileys
(especially animated ones) until all the consequences of this attack have
been understood. Twitter and Facebook are likely vulnerable too, although we
didn't conduct specific research yet on those networks.
The attached proof of concept program will compile the sample included
shellcode, encode it into a valid MSN smiley and compile a test C program by
using metasm. While the example shellcode and the compiled test program are
both targeting Linux, you can supply any shellcode you want, including a
Windows one, via the command line.
Please, use as follow:
"apt-get install libc6-dev-i386 mercurial ruby" if required
"hg clone https://metasm.cr0.org/hg/metasm/"
"cd metasm"
put smile.rb in the metasm directory
"ruby ./smile.rb"
"./test.lol"
Enjoy your shell !
--
Julien
--Boundary-00=_Ojt0JqDqv+O5XTz
Content-Type: application/x-ruby;
name="smile.rb"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="smile.rb"
#!/usr/bin/ruby
# (c) Yoann Guillot 2009
# License: WTFPLv2 (http://sam.zoy.org/wtfpl/)
require 'metasm'
if ARGV.empty?
orig = Metasm::Shellcode.assemble(Metasm::Ia32.new, <