Deutsch | English
n.runs AG - Das Unternehmen Sicherheit
 
 
The Company
LEISTUNGSSPEKTRUM
IT INFRASTRUKTUR
IT SICHERHEIT SECURITY
IT BUSINESS CONSULTING

n.runs AG
Nassauer Straße 60
61440 Oberursel
Telefon: +49 (0) 6171/699-0
Telefax: +49 (0) 6171/699-199
E-mail: contact@nruns.com
Impressum

.Security Tools - N.bug 1.0.0.15 RC - Run-Time Tracer

Introduction
n.bug is a library call trace implementation for Windows NT operating systems. It is meant as a tool to quickly analyse specific library calls a binary program makes during runtime.


A typical n.bug trace run consists of the following steps:

1. User selects the functions to trace
2. User selects either a running process or a program path (called the target)
3. User initiates trace
4. n.bug attaches a debugger engine to the target and executes it or resumes execution
5. (optional) User interacts with target
6. User terminates trace
7. User inspects trace results and optionally saves them to a file
8. (optional) User repeats the process with different settings

As the result of a trace session, n.bug outputs the following information for each library
function call detected and matching the trace definition:

• The caller’s return address (points to the instruction after the call instruction)
• The module and function name called
• The type, name and value of the parameter upon entry into the library function
• The type, name and value of the parameter upon exit from the library function
• The return value of the call

The results of a trace session can be saved into a text file for future reference and documentation purposes.

General concept of Runtime Analysis
Runtime analysis inspects the code of a target process during its execution. In contrast to static analysis, which takes the processes code and data information and tries to determine the possible execution paths, runtime analysis does not suffer from the many cases in which static analysis cannot determine variable parts of the code flow.

On the other hand, runtime analysis is always limited to the code executed, since only this is what is inspected. Consider the following code example:

void vulnerable_func(char *str) {
char buf[255];
if ( check_formatting(str) ) {
do_something( str );
} else {
sprintf(buf,"Error in string: %s\n",str);
log( buf );
}
}

When doing runtime analysis, normally the correct interaction is used with the target process. In the case of the function above, the vulnerable part is located in the handling of exceptional circumstances, where check_formatting(str) is failing.

Runtime analysis tries to regain a level of abstraction from the binary code executed. Manual inspection of all binary code in a target is unfeasible. Therefore, levels of abstraction are required to speed up the process of bug finding. Runtime analysis tries to inspect parts of the code flow and give an output, which abstracts the functionality covered by the binary code.


(größere Ansicht)

Library call tracing
Most high-level languages use several levels of abstraction to hide small details of data processing and operating system interfacing from the application developer. The order of abstraction is roughly as follows:

1. OS Kernel Functionality, exposed by Software Interrupts

2. Basic operating system functionality

a. Exposed by low level libraries (eg. libc)
b. Exposed by High-level OS API

3. Application framework functionality, exposed by derivable classes
Simple runtime analysis will trap and record all calls to the OS Kernel (1) and report them to the user. This approach is used in many UNIX environments with tools such as “strace” or “truss”. On a Windows 32 Platform, this approach is not feasible, since the Kernel API changes with releases and is intentionally not documented.

Library call tracing traps the calls to both low-level libraries as well as high-level OS API libraries and records their arguments. This gives the user a more abstract view on the operation of a specific piece of code. n.bug in particular will set breakpoints on all library calls it is supposed to trace and report the arguments of the calls, both upon entering and exiting the library function.

It should be permanently in the mind of the user that library call tracing is not complete. It only covers the code executed and it only covers functionality in the binary implemented by known and traced library functions. Custom code using pointer arithmetic or code using custom libraries with functions not defined to trace are not covered and will not show up in the report.

The user should also keep in mind that only functionality executed after the start of a trace is covered. If n.bug is attached to a process (e.g. a server) and no interaction with the server takes place, only the calls in the server’s idle loop are traced, which are probably not of any interest. To achieve a maximal effect, the user should try to interact with the target process in as many different ways as possible. For example, a user authentication should be tried with different usernames and passwords, both correct and wrong, using as many account types as possible.

Trace definition files

n.bug uses trace definition files to know the functions to trace and their type and number of arguments. The trace files in general follow a C compatible syntax for function prototypes.

A simple trace definition looks like this:

int sprintf([out] char * buf, [in] fmchar * format );
int swprintf([out] wchar *buffer, [in] fmtwchar *format );
int vsprintf([out] char *buffer, [in] fmtchar *format, [in] void * argptr);

A prototype definition must at least contain a return type, a function name, the parentheses and a terminating semicolon. A more complete specification of the same function to trace would be:

int msvcrt:system([in] char *commandline);

This includes the exact module where n.bug should look for the function, hereby disabling all other implementations of system in other modules. Do not specify a general trace definition and a module specific together in the same trace file (see Bugs and glitches). It also gives the argument a name, which is then displayed in the result window and the saved report. The [in] specification tells n.bug that the parameter is of interest when entering the function only.

Download N.Bug
Download the documentation
Penetration Test
 


11. August 2010:
Corporate News
n.runs veröffentlicht ihren Halbjahresbericht 2010 und bekräftigt die Prognose für das Gesamtjahr 2010
+++ Umsatzerlöse mit EUR 2,94 Mio. rund 9 Prozent über Vorjahresniveau(Halbjahr 2009: EUR 2,69 Mio.)
+++ n.runs erhöht EBIT um EUR 0,58 Mio. auf EUR 0,1 Mio.(Vorjahr: EUR -0,48 Mio.)
+++ Kostenmanagement konsequent vollzogen
+++ Fokussierung auf das Consulting-Geschäft als Core Business führt zu hohem Auftragseingang und Neukundengewinnung

* * *



16. Juni 2010:
Corporate News
n.runs veröffentlicht den Geschäftsbericht 2009 und gibt einen Ausblick auf 2010
+++ Umsatzerlöse in Höhe von EUR 5,66 Millionen erwirtschaftet
+++ EBIT auf minus EUR 0,32 Millionen verbessert (Vorjahr: minus EUR 0,80 Millionen)
+++ Straffes Kosten- und Liquiditätsmanagement umgesetzt
+++ Ausblick 2010: Umsatz: EUR 6,50 Millionen, EBIT: EUR 0,40 Millionen

* * *



1. März 2010:
Corporate News
n.runs wechselt vom Entry Standard in den Open Market

* * *



14. Januar 2010:
Pressemitteilung
n.runs AG präsentiert auf der OOP 2010 „Security in Design“ als Meilenstein für sichere Softwareentwicklung

* * *



5. Januar 2010:
Pressemitteilung
Der Oberurseler IT-Consultingspezialist erweitert sein Portfolio mit der “On Demand” Penetration Testing Plattform des indischen Anbieters iViZ

* * *



11. Dezember 2009:
Corporate News
Neuwahl zum Aufsichtsrat der n.runs AG
+++ Ordentliche Hauptversammlung 2009 beschließt Neubesetzung des Aufsichtsrats
+++ Günther Paul Löw erwartungsgemäß zum Aufsichtsratsvorsitzenden gewählt
+++ Ralph-Peter Quetz zum Stellvertreter ernannt


* * *



28. September 2009:
Corporate News
n.runs AG veröffentlicht die Halbjahreszahlen 2009
+++ Umsatzrückgang von 19 Prozent auf EUR 2,69 Millionen
+++ EBIT von EUR -0,48 Millionen (Halbjahr 2008: EUR -0,40 Millionen)
+++ Kosteneinsparungen von über EUR 1,1 Millionen erzielt
+++ Übergeordnete IT-Trends bleiben bestehen


* * *



4. September 2009:
Corporate News
n.runs veröffentlicht den Geschäftsbericht 2008
Umsatzerlöse steigen um 22 Prozent auf EUR 6,70 Millionen
+++ EBIT verbessert sich um EUR 0,21 Millionen auf EUR -0,80 Millionen
+++ Konzentration auf profitables Consultinggeschäft


* * *

4. März 2009:
Pressemitteilung
n.runs AG und TÜV TRUST IT TÜV AUSTRIA GmbH geben Kooperation im IT-Securityumfeld bekannt

* * *

27 Februar 2009:
Corporate News
n.runs platziert Kapitalerhöhung
+++ Erhöhung des Grundkapitals um 8,7 Prozent
+++ Mittelzufluss für Reorganisation und weiteres Wachstum im Consulting
+++ Ausgliederung der Softwarelösung aps-AV®


* * *

17 Dezember 2008:
Advisory: Opera HTML parsing flaw lead to remote code execution  

* * *

27 Oktober 2008:
Advisory: Eaton MGE OPS Network Shutdown Module authentication bypass and code execution

* * *

21 Oktober 2008:
Advisory: Internet Explorer HTML Object Memory Corruption

* * *

20 Oktober 2008:
Pressemitteilung
n.runs und Avira geben strategische Partnerschaft im IT-Sicherheitsumfeld bekannt

* * *

14 Oktober 2008:
Pressemitteilung
SYSTEMS 2008: n.runs AG präsentiert Bollwerk gegen den „Feind im eigenen Netz“ und Microsoft "Security Development Lifecycle Pro Network"

* * *

30 September 2008:
Corporate News
Zahlen des ersten Halbjahreszahlen 2008 bestätigen Expansionskurs
+++ Umsatzerlöse steigen um knapp 30 Prozent auf EUR 3,32 Millionen
+++ EBITDA um EUR 0,27 Millionen auf EUR -0,35 Millionen verbessert
+++ Ergebnis von Softwareinvestitionen geprägt, Consulting profitabel
+++ Ausblick 2008


* * *

17 September 2008:
Corporate News
n.runs wird durch Microsoft als Mitglied des neuen Programms Microsoft Security Development Lifecyle Pro Network berufen
+++ n.runs AG exklusives Mitglied im Microsoft SDL Pro Network
+++ Einziges Mitglied des MS SDL Pro Network auf europäischem Festland
+++ Mittelfristiger Umsatzbeitrag von über 10 Prozent geplant


* * *

17 September 2008:
Pressemitteilung
Software-Gigant beruft IT-Sicherheitsunternehmen zum Mitglied des "Microsoft Security Development Lifecycle Pro Network" Microsoft setzt im Rahmen ihres neuen Partnerprogramms "SDL Pro Network" in EMEA auf die n.runs AG

* * *

10 September 2008:
Advisory
Cross-Site Scripting Filter Evasion in various frameworks and applications

* * *

10 September 2008:
Advisory
Horde Framework Cross-Site Scripting in filename MIME attachments

* * *

25 August 2008:
Press-Release
IT-Sicherheit für Regierungen und Militär:
n.runs und Thales kooperieren


* * *

20 August 2008:
Artikel
"IT-Grundschutz" des BSI und secumedia Verlages - Antivirensoftware :
Wegbereiter für
Datendiebe


* * *

20 August 2008:
Press Release
Wachsende Bedrohung:
folgenschwere Angriffe auf E-Mail-/AV-Systeme nehmen stetig zu.


* * *