Buffer Overflow Attacks

Para los hombres y mujeres que orgullosamente
“sirven en silencio”,
dedicando sus vidas a
Una misión, Compañeros de Trabajo o al País.

OVERFLOW-1

James C. Foster Fellow

es el Director Adjunto de Global Security Solution
Desarrollo para Computer Sciences Corporation,
y escritor de manuales hacking, cracking entre otros pocos.

Colaboradores

Vitaly Osipov (CISSP, CISA)

está actualmente gestionando sistemas de detección de intrusos
un banco de inversión global Big 5 en Sydney, Australia.

Niels Heinen

es investigador de seguridad en una empresa de seguridad europea.

Nishchal Bhalla

es especialista en pruebas de productos, revisiones de código y aplicaciones web.

Expertos adicionales en el área

Marshall Beddoe

es Investigador Científico en McAfee, y lleva un cabo extensa
investigación en mapeo de redes pasivas, detección remota promiscua,
impresión, elementos internos de FreeBSD y nuevas técnicas de explotación.

Tony Bettini

líder del equipo McAfee Foundstone I + D y ha trabajado para
otras firmas de seguridad, incluyendo Foundstone, Guardián y Bindview.

 

Contenido

Encoding Shellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96
Reusing Program Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . .102
Open Source Programs . . . . . . . . . . . . . . . . . . . . . . . .102
Closed Source Programs . . . . . . . . . . . . . . . . . . . . . . .104
OS-Spanning Shellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .106
Understanding Existing Shellcode . . . . . . . . . . . . . . . . . . . . . . .107
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112
Links to Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113
Mailing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . .114
Chapter 4 Win32 Assembly . . . . . . . . . . . . . . . . . . . . . . .117
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
Application Memory Layout . . . . . . . . . . . . . . . . . . . . . . . . . . .118
Application Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120
Memory Allocation—Stack . . . . . . . . . . . . . . . . . . . . . . . .121
Memory Allocation—Heap . . . . . . . . . . . . . . . . . . . . . . . .122
Heap Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123
Windows Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124
Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124
Indexing Registers . . . . . . . . . . . . . . . . . . . . . . . . . . .125
Stack Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125
Other General-Purpose Registers . . . . . . . . . . . . . . . .125
EIP Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . .131
Case Study 1.1 FreeBSD NN Exploit Code . . . . . . . . . . . .133
Exploitation Code Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Case Study 1.2 xlockmore User Supplied Format String
Vulnerability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
xlockmore Vulnerability Details . . . . . . . . . . . . . . . . . . . . . . . . .139
Exploitation Code Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Case Study 1.3 Frontpage Denial of Service Utilizing
WinSock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
Code Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144
Application Defense Hack.h Code Dump . . . . . . . . . . . . . . . . .145
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152
Case Study 1.4 cURL buffer overflow on FreeBSD . . . . . .154
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154
Exploit Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
Part II Exploiting Buffer Overflows . . . . . . . . . . . . . . . . .159
Chapter 5 Stack Overflows . . . . . . . . . . . . . . . . . . . . . . . .161
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161
Intel x86 Architecture and Machine Language Basics . . . . . . . . .163
Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
Stacks and Procedure Calls . . . . . . . . . . . . . . . . . . . . . . . . .165
Storing Local Variables . . . . . . . . . . . . . . . . . . . . . . . . .167
Calling Conventions and Stack Frames . . . . . . . . . . . . . . . .172
Introduction to the Stack Frame . . . . . . . . . . . . . . . . .172
Passing Arguments to a Function . . . . . . . . . . . . . . . . .173
Stack Frames and Calling Syntaxes . . . . . . . . . . . . . . . .180
Process Memory Layout . . . . . . . . . . . . . . . . . . . . . . . . . . .181
Stack Overflows and Their Exploitation . . . . . . . . . . . . . . . . . . .183
Simple Overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .185
Creating an Example Program with an Exploitable Overflow189
Writing Overflowable Code . . . . . . . . . . . . . . . . . . . .189
Disassembling the Overflowable Code . . . . . . . . . . . . .190
Performing the Exploit . . . . . . . . . . . . . . . . . . . . . . . . . . . .192
General Exploit Concepts . . . . . . . . . . . . . . . . . . . . . .192
Buffer Injection Techniques . . . . . . . . . . . . . . . . . . . . .193
Methods to Execute Payload . . . . . . . . . . . . . . . . . . . .194
Designing Payload . . . . . . . . . . . . . . . . . . . . . . . . . . . .198
What Is an Off-by-One Overflow? . . . . . . . . . . . . . . . . . . . . . .204
Functions That Can Produce Buffer Overflows . . . . . . . . .211
Functions and Their Problems, or Never Use gets() . . . .211
gets() and fgets() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
strcpy() and strncpy(), strcat(), and strncat() . . . . . . . . . .212
(v)sprintf() and (v)snprintf() . . . . . . . . . . . . . . . . . . . . .213
sscanf(), vscanf(), and fscanf() . . . . . . . . . . . . . . . . . . . .213
Other Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
Challenges in Finding Stack Overflows . . . . . . . . . . . . . . . . . . .215
Lexical Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217
Semantics-Aware Analyzers . . . . . . . . . . . . . . . . . . . . . . . . .218
Application Defense! . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
OpenBSD 2.8 ftpd Off-by-One . . . . . . . . . . . . . . . . . . . . .220
Apache htpasswd Buffer Overflow . . . . . . . . . . . . . . . . . . .221
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224
Links to Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . .227
Chapter 6 Heap Corruption . . . . . . . . . . . . . . . . . . . . . . .229
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
Simple Heap Corruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230
Using the Heap—malloc(), calloc(), realloc() . . . . . . . . . . . .231
Simple Heap and BSS Overflows . . . . . . . . . . . . . . . . . . . .232
Corrupting Function Pointers in C++ . . . . . . . . . . . . . . . .235
Advanced Heap Corruption—Doug Lea malloc . . . . . . . . . . . . .238
Overview of Doug Lea malloc . . . . . . . . . . . . . . . . . . . . . .238
Memory Organization—Boundary Tags, Bins, Arenas . . . . . .239
The free() Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244
Fake Chunks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
Example Vulnerable Program . . . . . . . . . . . . . . . . . . . . . . .248
Exploiting frontlink() . . . . . . . . . . . . . . . . . . . . . . . . . . . . .250
Off-by-One and Off-by-Five on the Heap . . . . . . . . . . . . .251
Advanced Heap Corruption—System V malloc . . . . . . . . . . . . .252
System V malloc Operation . . . . . . . . . . . . . . . . . . . . . . . .252
Tree Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253
Freeing Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255
The realfree() Function . . . . . . . . . . . . . . . . . . . . . . . .257
The t_delete Function—The Exploitation Point . . . . . .260
Application Defense! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263
Fixing Heap Corruption Vulnerabilities in the Source . . . . .263
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
Links to Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . .270
Chapter 7 Format String Attacks . . . . . . . . . . . . . . . . . . .273
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273
What Is a Format String? . . . . . . . . . . . . . . . . . . . . . . . . . . . . .274
C Functions with Variable Numbers of Arguments . . . . . . .274
Ellipsis and va_args . . . . . . . . . . . . . . . . . . . . . . . . . . .275
Functions of Formatted Output . . . . . . . . . . . . . . . . . .278
Using Format Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
printf() Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280
Format Tokens and printf() Arguments . . . . . . . . . . . . . . . .281
Types of Format Specifiers . . . . . . . . . . . . . . . . . . . . . . . . .282
Abusing Format Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284
Playing with Bad Format Strings . . . . . . . . . . . . . . . . . . . .286
Denial of Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
Direct Argument Access . . . . . . . . . . . . . . . . . . . . . . . .287
Reading Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .288
Writing to Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291
Simple Writes to Memory . . . . . . . . . . . . . . . . . . . . . .291
Multiple Writes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294
Challenges in Exploiting Format String Bugs . . . . . . . . . . . . . . .296
Finding Format String Bugs . . . . . . . . . . . . . . . . . . . . . . . .296
What to Overwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299
Destructors in .dtors . . . . . . . . . . . . . . . . . . . . . . . . . .300
Global Offset Table entries . . . . . . . . . . . . . . . . . . . . . .302
Structured Exception Handlers . . . . . . . . . . . . . . . . . .304
Operating System Differences . . . . . . . . . . . . . . . . . . . . . .305
Difficulties in Exploiting Different Systems . . . . . . . . . . . . .308
Application Defense! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .308
The Whitebox and Blackbox Analysis of Applications . . . . .309
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
Links to Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . .314
Chapter 8 Windows Buffer Overflows . . . . . . . . . . . . . . .317
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .317
Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
Basic Stack Overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322
Writing Windows Shellcode . . . . . . . . . . . . . . . . . . . . . . . .327
Overcoming Special Characters (Example: NULL) . . . . . . .333
Client Server Application . . . . . . . . . . . . . . . . . . . . . . . . . .338
Using/Abusing the Structured Exception Handler . . . . . . . .350
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .355
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .355
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . .357
Section 2 Case Studies
Case Study 2.1 cURL Buffer Overflow on Linux . . . . . . . .359
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .359
Exploit Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .360
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .363
Case Study 2.2 SSLv2 Malformed Client Key Remote
Buffer Overflow Vuln. . . . . . . . . . . . . . . . . . . . . . . . . . .364
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .364
OpenSSL Vulnerability Details . . . . . . . . . . . . . . . . . . . . . . . . . .365
Exploitation Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365
The Complication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .366
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .367
Improving the Exploit . . . . . . . . . . . . . . . . . . . . . . . . . . . .368
Much Improved… but More to Come! . . . . . . . . . . . . . . .368
Complete Exploit Code for OpenSSL SSLv2
Malformed Client Key Remote Buffer Overflow . . . . . . . . . .369
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .375
Case Study 2.3 X11R6 4.2 XLOCALEDIR Overflow . . . . .376
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .376
XLOCALEDIR Vulnerability Details and Analysis . . . . . . . . . . .377
Exploitation Code Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . .379
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .381
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .381
Case Study 2.4 Microsoft MDAC Denial of Service . . . . .382
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382
Code Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .383
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385
Application Defense Hack.h Code Dump . . . . . . . . . . . . . . . . .386
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .392
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .394
Case Study 2.5 Local UUX Buffer Overflow on HPUX . . .395
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .395
Exploit Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .396
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .399
Part III Finding Buffer Overflows . . . . . . . . . . . . . . . . . . .401
Chapter 9 Finding Buffer Overflows in Source . . . . . . . .403
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .403
Source Code Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .404
Free Open Source Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .406
Application Defense Snapshot . . . . . . . . . . . . . . . . . . . . . . .406
RATS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408
Flawfinder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412
Flawfinder Text Output . . . . . . . . . . . . . . . . . . . . . . . .414
ITS4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417
Application Defense—Enterprise Developer . . . . . . . . . . . . . . .418
Secure Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .423
Architecture and Deployment . . . . . . . . . . . . . . . . . . . . . . .423
Vulnerability Knowledgebase . . . . . . . . . . . . . . . . . . . . . . .424
Using CodeAssure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .425
Setting Up Projects . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Performing the Analysis . . . . . . . . . . . . . . . . . . . . . . . .427
Vulnerability Review and Reporting . . . . . . . . . . . . . .428
Managing Results . . . . . . . . . . . . . . . . . . . . . . . . . . . .430
Remediation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .432
Ounce Labs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .432
Prexis’ Science of Automated Analysis . . . . . . . . . . . . . . . . .433
Prexis Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .434
Prexis Assessment Capability . . . . . . . . . . . . . . . . . . . .434
Prexis Reporting and Remediation Capabilities . . . . . .434
Prexis in Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .435
Vulnerability Assessment with Prexis . . . . . . . . . . . . . . . . . .436
Project Configuration . . . . . . . . . . . . . . . . . . . . . . . . .436
Running an Assessment . . . . . . . . . . . . . . . . . . . . . . . .436
Examining Assessment Results . . . . . . . . . . . . . . . . . . .437
Filtering Assessments . . . . . . . . . . . . . . . . . . . . . . . . . .438
Remediation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .438
Fortify Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .440
Fortify’s Source Code Analysis Suite . . . . . . . . . . . . . . . . . .441
Using the Source Code Analysis Engine . . . . . . . . . . . . . . .441
Integrating with the Build Process . . . . . . . . . . . . . . . .442
Running the Analysis . . . . . . . . . . . . . . . . . . . . . . . . .443
Understanding the Raw Output . . . . . . . . . . . . . . . . .443
Audit Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .444
Audit Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .445
Software Security Manager . . . . . . . . . . . . . . . . . . . . . . . . .447
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .449
Solutions Fast Track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .450
Links to Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .452
Frequently Asked Questions . . . . . . . . . . . . . . . . . . . . . . . . . . .453
Case Study 3.1 InlineEgg I . . . . . . . . . . . . . . . . . . . . . . . .455
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .455
Inline Egg Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .456
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .456
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .457
Case Study 3.2 InlineEgg II . . . . . . . . . . . . . . . . . . . . . . . .458
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .458
Inline Egg Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .459
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .460
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461
Case Study 3.3 Seti@Home Exploit Code . . . . . . . . . . . .462
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .462
Exploitation Code Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . .462
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .467
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .469
Case Study 3.4 Microsoft CodeBlue Exploit Code . . . . . .470
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470
Exploitation Code Dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . .471
Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .475
Appendix A The Complete Data Conversion Table . . . . .477
Appendix B Useful Syscalls . . . . . . . . . . . . . . . . . . . . . . . .485
exit( int ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
open( file, flags, mode ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
close( filedescriptor ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
read( filedescriptor, pointer to buffer, amount of bytes ) . . . . . . .486
write( filedescriptor, pointer to buffer, amount of bytes ) . . . . . .486
execve( file, file + arguments, environment data ) . . . . . . . . . . . .486
socketcall(callnumber, arguments ) . . . . . . . . . . . . . . . . . . . . . . .486
socket( domain, type, protocol ) . . . . . . . . . . . . . . . . . . . . . . . . .487
bind( file descriptor, sockaddr struct, size of arg 2 ) . . . . . . . . . .487
listen ( file descriptor, number of connections allowed in queue ) 487
accept ( file descriptor, sockaddr struct, size of arg 2 ) . . . . . . . . .487

James C. Foster Fellow

Gracias, quien quiera que seas.

Descargatelo

 

Anuncios