Monday, November 26, 2007

boot graphs

The exec-notify program can be used together with the exec2dot script to generate program
calling graphs from booting or something like a KDE startup. Especially the boot process from a laptop
looks very interesting.
Sample graphs may be found here and here.

Wednesday, November 21, 2007

satire II

Sorry, the following is only in german due to my limited native language skills :-)

Ich sass neulich in der S-Bahn auf dem Weg zum recurity-labs summit, um
ein paar Freunde wiederzutreffen. In der S-Bahn um mich herum lauter wirklich tolle Leute mit viel
Ahnung ueber Web 2.0, flat-rate-preise und natuerlich - BLOGS!
Dazu die Jungs mit den haengenden Hosen und dieser komischen Musik
(ey, alter - das ging so: uz, uz, uzz. Nee, warte... uzzzzz,uz,uz!) Man lese mehr dazu hier.

Da kam mir die Idee, unsere heutige Welt in einem kleinen Gedicht zusammenzufassen.
Den verantwortlichen Rapper fuer den Originalsong werden die Meisten sicher leidlich kennen,
auch wenn er einem im Radio mittlerweile seltener aufgenoetigt wird.
Wer wirklich gute Musik mag, vertieft sich natuerlich in die Gitarre von Mark Tremonti.

genug geschwafelt:

Mein blog!

ich habe nichts zu sagen
und das kann ich nicht ertragen,
darum schreib ich das in - mein' blog!

ich gehe noch zur schule,
ich find das alles voll schwul hier,
das schreibe ich in - mein' blog!

besser gesagt geh' ich in die achte,
genau wie die bei der ich immer uebernachte,
wies war schreib ich in - mein' blog!

der typ aus der fuenften,
tut mich immer beschimpfen,
das schreibe ich in - mein' blog!

wenn ich gross bin werd ich politiker,
oder vielleicht auch filmkritiker,
wofuer ich mich entscheide, kommt in - mein' blog!

ich habe weder hefter noch anstand,
und beim tanzen mach ich handstand
ich habe nur - nen block!

Tuesday, November 20, 2007

Eyes on Exec reloaded

10 years ago or so, I wrote a tool called "Eyes on Exec" (EoE) which was a kernel module for the 2.0, 2.2 and 2.4 Kernel.
It created a device /dev/exec from which one could read all the commands executed recently
including callers PID, EUID etc. Some simple hostbased IDS used this input to ensure that e.g.
pop3d never executed anything. It worked very well. Additionally, code reviewers (myself :)
found it usefull since you easily see if some daemons/applications execute shell programs
in a way that is not obvious to the auditor due to weird library calls. The famous modprobe bug
which used ping as a trigger was found by me with the help of EoE (google for rootprobe exploit).

2.2 times are gone, but the new 2.6 Kernel has a nice API called proc connector which allows
to register for certain events such as fork/exec etc. into the proc FS. One is then notified
whenever the questioned event arrives. Ever wanted to know what man really executes or how
acroread is handling mail sent from within a PDF? :-) Jump towards here.

Tuesday, October 30, 2007

Puzzle solved

Of course you all found the bug I was talking about after I uploaded the correct
screenshot! ;-) Bash me. You even found minor other issues which should however
not be exploitable.
Nevertheless, wpa_supplicant has got an excellent code structure which is fun to review.
If you ever want to learn how to write your own TLSv1 implementation, have a look at their code.

Tuesday, October 23, 2007

Spot the fed^H^H^Hbug

There is an interesting bug within wpa_supplicant's ASN.1 parsing. Usually, it uses the OpenSSL
libraray to obtain and parse the X509 certificates. However, it can be compiled to use built-in
X509 e.g. ASN.1 parsing routines to do so. Nearly all X509 functions use
asn1_get_next(). There is a buffer overflow condition within this function. Found it?
Make a comment!

P.S. Our packages do not use the vulnerable parsing code.

P.P.S. Puzzle-solving coming soon :-)

Wednesday, September 12, 2007


Check out my libpcap C# binding.
It is a first draft version without Makefile, README etc. but contains all
pcap functions, structures, callbacks etc you need to use libpcap via your mono
environment. If you remove the Main() function you can build your own DLL
and can capture and send packets easier than you ever did in C or C++ ;-)

Wednesday, August 15, 2007


It still pays to have a look at open source projects.
rsync 2.6.9 contains two off by one stack overflows, one from which the target buffer is next to the
saved frame pointer.
The problematic function is f_name().
Obviously it expects a target buffer size
of MAXPATHLEN bytes. Otherwise
the size parameter calculation to
strlcpy() is wrong.
Lets have a look at f_name() calls within the two following pictures.
An offset is added to the fname buffer
which is of size MAXPATHLEN.
The offset is the stringlen of dir.root
plus one (due to the slash).
Within successfull_send(), the buffer
should be neighbor of the saved
frame pointer since MAXPATHLEN
does not need to be aligned.
Thus the assumption within the f_name() function about its target buffer size
is wrong.
However there is a check in make_file()
that looks whether any received
dir and pathnames would overrun
MAXPATHLEN bytes. flist_dir_len is exactly what becomes strlen of dir.root later. However, the trailing slash is missing! :-) Happy PoCing!!!
Updated rsync-packages for SUSE are already available via the online updater.
A fix is also available.

Monday, July 30, 2007


Since I am a cynical person (writing exploits if you love programming is cynism too) and
some friends told me to publish some of my artwork I used to do when not in front
of a computer, here we go.
I am sorry if this is only in german, but some jokes make only sense if you have the
language of choice under full control (just like exploiting a C program :-)
In english it would probably read like:"Closing time due to death."

If you don't like it; its OK. Do not bash me for my horrible drawing skills.
Some rsync foo is coming soon, to become technical again.

Wednesday, July 18, 2007

202c rising

Due to a new law in germany (202c) to prevent cibercrime (huh!), some tools
become illegal. There is a good chance that I will make some links from
previous posts invalid or inaccessible.
Even though none of my tools do anything bad and illegal use is strictly
discouraged some lawyers might feel its still illegal.
Some points:

1. None of my tools/code has bad or illegal intent. Its all for educational purposes
(university work or work I do at job) only. This statement is also contained within any
tool and its license.
2. Everyone is responsible for their own actions. If you abuse ssh to log into foreign
computers and abuse tcpdump to sniff traffic there, its your own fault.
2a) Unfortunally it may even become tcpdump's fault in future.
3. I will try to continue my work, but maybe need to re-order some tools in order
to meet the law. Replacing shellcodes in PoC with "\xcc", not disclosing certain
tools/info to the public etc.; whatever is necessary to be conform to law.
4. I hope anyone will relax soon, and its still possible to enjoy *coding*.

I hope there is no special forces sent to me for a "kill -9" prior to hearing me;
as suggested recently by our interior minister. Nuts.
If you feel that some of my code hits 202c nevertheless, feel free to contact me and
I will remove it if you are right.

Wednesday, May 23, 2007

OpenSSH 4.6 call graph

Today I had a look at the OpenSSH sources again. It seems to me that they overdo the whole PrivSep thing.
Its quite complicated to follow all the calls across
processes and privileges. Do you think they are bug-free?
I made a call-graph which honours all the different
UIDs and PIDs. I used the graphviz package which
core-dumped once in a while due to the complexity. I know there are
better tools for graphing. You can read a paper
describing my graph-tool using graphviz here or download the
complete OpenSSH 4.6 daemon graph here.

I just substituted the PDF with a new one. Some
nodes were located within the wrong cluster. It turned
out that one pass (of data recording) is not enough to properly cluster the graph. Its also quite hard to
verify that the nodes are linked correctly. I hope
it is this time! :-) I want to encourage you to submit comments if you feel something is wrong or you (dis-)like

Tuesday, May 15, 2007


Since a lot of changes happened to the Linux runtime environment since 2001 and I have
not seen an x86-64 injectso port of Saun Clowes' i386/SPARC injectso, here is a
rewrite by me.

Tuesday, April 17, 2007


RELRO is used on newer Linux distributions to place commonly exploited structures in ELF
binaries to a quasi-readonly location. Especially the GOT, often used within heap
based exploits is made read-only after relocation by the dynamic linker. Today I analyzed
how exploits could be done in future nevertheless of NX, ASLR, RELRO etc.
An ASCII-file describing exploitation via fini() can be found

The issue is now handled as a bug. Newer GCC versions probably fix this issue.
However, I doubt you can put all constructors/destructors within -w pages
or at randomized locations.
As a side note: Not many ppl seem to be in YOUNIX exploitation anymore. They
either seem to sell exploits to certain companies, do Win stuff or collect bugs
for a month-of-silly-appz-bugs.

Wednesday, January 31, 2007

First Vista remote exploit?

Yesterday I had the idea to use Vista's speech recognition
system for remote exploiting. By embedding commands
into a soundfile offered by an evil website or into
all these Web 2.0 videos, remote attackers might be able
to execute commands on a Vista system while they
are spoken upon viewing.
The idea has little chance to succeed I thought. I posted
to Daily Dave's mailinglist and
George Ou made some samples and it seemed to work.
Read the full thread here:

There are some constraints but basically it seems that
it is possible to delete files or to start certain
applications remotely.

I could not verify the results by myself since I lack a license.

It has now been confirmed by various people that the speech recognition
software seems to miss echo cancellation. While it is "easy" to implement
with applications like skype or messenger I do not know how easy it is
within the OS. Remember that the out-path is via the web-browser
(no idea whether the audio-I/O architecture allows access by the recognition
software) which
does not belong to the speech recognition system. From that point of view,
the OS would need to implement a global echo cancellation, a few layers below
the browser/recognition layer. This would make such systems within messenger
or skype obsolete.

It has been confirmed that this also works with untrained voices. Not as good
as with trained ones, but it works. Downloading and executing of user-level
binaries which do not trigger UAC has also been confirmed to work.

Monday, January 29, 2007

Impressum - Imprint - Disclaimer

Haftung für Inhalte
Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
Haftung für Links
Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.

Anfallende Verkehrsdaten (IP Adressen, Standort, Browser Version usw). werden vom
Platformbetreiber (Google) und eventuell verlinkten Drittanbietern (ClustrMaps)
erhoben und ausgewertet. Wir erhalten keinen Zugriff auf diese Daten. Eventuelle
Datenschutz-Anfragen diesbezüglich sind an den jeweiligen Betreiber der Platform
zu richten.

Datenschutzerklärung für die Nutzung von Google Analytics
Diese Website benutzt Google Analytics, einen Webanalysedienst der Google Inc. ("Google"). Google Analytics verwendet sog. "Cookies", Textdateien, die auf Ihrem Computer gespeichert werden und die eine Analyse der Benutzung der Website durch Sie ermöglichen. Die durch den Cookie erzeugten Informationen über Ihre Benutzung dieser Website werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert. Im Falle der Aktivierung der IP-Anonymisierung auf dieser Webseite wird Ihre IP-Adresse von Google jedoch innerhalb von Mitgliedstaaten der Europäischen Union oder in anderen Vertragsstaaten des Abkommens über den Europäischen Wirtschaftsraum zuvor gekürzt.
Nur in Ausnahmefällen wird die volle IP-Adresse an einen Server von Google in den USA übertragen und dort gekürzt. Im Auftrag des Betreibers dieser Website wird Google diese Informationen benutzen, um Ihre Nutzung der Website auszuwerten, um Reports über die Websiteaktivitäten zusammenzustellen und um weitere mit der Websitenutzung und der Internetnutzung verbundene Dienstleistungen gegenüber dem Websitebetreiber zu erbringen. Die im Rahmen von Google Analytics von Ihrem Browser übermittelte IP-Adresse wird nicht mit anderen Daten von Google zusammengeführt.
Sie können die Speicherung der Cookies durch eine entsprechende Einstellung Ihrer Browser-Software verhindern; wir weisen Sie jedoch darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche Funktionen dieser Website vollumfänglich werden nutzen können. Sie können darüber hinaus die Erfassung der durch das Cookie erzeugten und auf Ihre Nutzung der Website bezogenen Daten (inkl. Ihrer IP-Adresse) an Google sowie die Verarbeitung dieser Daten durch Google verhindern, indem sie das unter dem folgenden Link verfügbare Browser-Plugin herunterladen und installieren:

Datenschutzerklärung für die Nutzung von Google +1
Erfassung und Weitergabe von Informationen:
Mithilfe der Google +1-Schaltfläche können Sie Informationen weltweit veröffentlichen. über die Google +1-Schaltfläche erhalten Sie und andere Nutzer personalisierte Inhalte von Google und unseren Partnern. Google speichert sowohl die Information, dass Sie für einen Inhalt +1 gegeben haben, als auch Informationen über die Seite, die Sie beim Klicken auf +1 angesehen haben. Ihre +1 können als Hinweise zusammen mit Ihrem Profilnamen und Ihrem Foto in Google-Diensten, wie etwa in Suchergebnissen oder in Ihrem Google-Profil, oder an anderen Stellen auf Websites und Anzeigen im Internet eingeblendet werden.
Google zeichnet Informationen über Ihre +1-Aktivitäten auf, um die Google-Dienste für Sie und andere zu verbessern. Um die Google +1-Schaltfläche verwenden zu können, benötigen Sie ein weltweit sichtbares, öffentliches Google-Profil, das zumindest den für das Profil gewählten Namen enthalten muss. Dieser Name wird in allen Google-Diensten verwendet. In manchen Fällen kann dieser Name auch einen anderen Namen ersetzen, den Sie beim Teilen von Inhalten über Ihr Google-Konto verwendet haben. Die Identität Ihres Google-Profils kann Nutzern angezeigt werden, die Ihre E-Mail-Adresse kennen oder über andere identifizierende Informationen von Ihnen verfügen.

Verwendung der erfassten Informationen:
Neben den oben erläuterten Verwendungszwecken werden die von Ihnen bereitgestellten Informationen gemäß den geltenden Google-Datenschutzbestimmungen genutzt. Google veröffentlicht möglicherweise zusammengefasste Statistiken über die +1-Aktivitäten der Nutzer bzw. gibt diese an Nutzer und Partner weiter, wie etwa Publisher, Inserenten oder verbundene Websites.

Quellenangaben: eRecht24 Disclaimer, Datenschutzerklärung für Google Analytics, Datenschutzerklärung für Google +1