SLAE Student Slides PDF
SLAE Student Slides PDF
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
Course Introduc4on
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
hLp://securitytube-‐training.com/online-‐courses/securitytube-‐linux-‐assembly-‐expert/
©SecurityTube.net
Course
Syllabus
–
Assembly
Basics
©SecurityTube.net
ApplicaSon
to
Infosec
©SecurityTube.net
Registered
Students
Benefit
©SecurityTube.net
Future
Courses
• ARM Assembly
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE)
hLp://www.securitytube.net
Vivek
Ramachandran
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
What
is
Assembly
Language?
©SecurityTube.net
I
only
speak
binary!
010101010111110101101010101010101
111010101101011010101010101011010
010101010111101000011110101010101
©SecurityTube.net
Humans
cannot
speak
binary
010101010111110101101010101010101
111010101101011010101010101011010
010101010111101000011110101010101
©SecurityTube.net
Assembly
Language
©SecurityTube.net
CorrelaSon
with
HLLs
hLp://www.tenouk.com/ModuleW_files/ccompilerlinker001.png
©SecurityTube.net
Different
Processors
–
Different
Assembly
Language
• Intel
• ARM
• MIPS
©SecurityTube.net
Intel
Architecture
• IA-‐32
• IA-‐64
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert32
©SecurityTube.net
Why
IA-‐32?
©SecurityTube.net
Exercise
1.1:
Lab
Setup
Please
Register
for
this
course
to
receive
the
soluSon
video
for
this
exercise.
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Exercise
1.2:
Understanding
your
CPU
• Find
CPU
details
on
the
Ubuntu
System
• How
do
you
know
if
you
are
on
a
32/64
bit
CPU?
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
Exercise
1.1
Topic:
What
is
Assembly
Language?
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Exercise
1.1:
Lab
Setup
©SecurityTube.net
Ubuntu
hLp://www.ubuntu.com/download/desktop
• Install Virtualbox
hLps://www.virtualbox.org/
©SecurityTube.net
InstallaSon
• Nasm
• Code
files:
– SLAE-‐Code.zip
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
Exercise
1.2
Topic:
What
is
Assembly
Language?
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Exercise
1.2:
Understanding
your
CPU
• Find
CPU
details
on
the
Ubuntu
System
• How
do
you
know
if
you
are
on
a
32/64
bit
CPU?
©SecurityTube.net
Find
CPU
Details
©SecurityTube.net
/proc/cpuinfo
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
2.
IA-‐32
Architecture
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
System
OrganizaSon
Basics
CPU
I/O Devices
©SecurityTube.net
CPU
Registers
• Flags – Used to indicate various “event” when execuSon is happening
©SecurityTube.net
IA-‐32
Registers
(Logical
Diagram)
©SecurityTube.net
General
Purpose
Registers
AX
EAX
AH
AL
31
15
7
0
BX
EBX
BH
BL
31
15
7
0
CX
ECX
CH
CL
31
15
7
0
DX
EDX
DH
DL
31
15
7
0
©SecurityTube.net
General
Purpose
Registers
SP
ESP
31
15
0
BP
EBP
31
15
0
SI
ESI
31
15
0
DI
EDI
31
15
0
©SecurityTube.net
GPR
Common
FuncSonality
EAX
Accumulator
Register
–
used
for
storing
operands
and
result
data
CS Code
DS Data
SS Stack
ES Data
FS Data
GS Data
15 0
©SecurityTube.net
EFLAGS
Register
EIP
31
0
• InstrucSon
Pointer
• Holy
grail
for
Shellcoding,
Exploit
Research
etc.
©SecurityTube.net
FloaSng
Point
Unit
(FPU)
or
x87
• Extensions
– MMX
– SSE
– SSE2
– SSE3
ST(1) MM1
ST(2) MM2
ST(3) MM3
ST(4) MM4
ST(5) MM5
ST(6) MM6
ST(7) MM7
79
63
0
©SecurityTube.net
XMM
XMM0
XMM1
XMM2
XMM3
XMM4
XMM5
XMM6
XMM7
127
0
©SecurityTube.net
Exercise
1.2.1:
Lab
Setup
• Inspect
the
General
Purpose,
Segment,
EFLAGS,
FPU,
MMX,
XMM
etc.
registers
on
your
Ubuntu
system
Please
Register
for
this
course
to
receive
the
soluSon
video
for
this
exercise.
hLp://SecurityTube-‐Training.com
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
Exercise
1.2.1:
Lab
Setup
• Inspect
the
General
Purpose,
Segment,
EFLAGS,
FPU,
MMX,
XMM
etc.
registers
on
your
Ubuntu
system
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
hLp://SecurityTube-‐Training.com
©SecurityTube.net
CPU
Modes
for
IA-‐32
• Real
Mode
– At
power
up
or
reset
– Can
only
access
1
MB
memory
– No
memory
protecSon
– Privilege
Levels
(Kernel
vs
User
space)
not
possible
• Protected
Mode
– Up
to
4GB
memory
– memory
protecSon
/
privilege
level
/
mulS-‐tasking
– Supports
Virtual-‐8086
mode
©SecurityTube.net
Memory
Models
©SecurityTube.net
Virtual
Memory
Model
Kernel
Space
(1
GB)
User
Space
(3
GB)
©SecurityTube.net
0XFFFFFFFF
Kernel
Space
0xC0000000
©SecurityTube.net
View
Process
OrganizaSon
• /Proc
– /proc/pid/maps
• pmap
©SecurityTube.net
cat
/proc/pid/maps
©SecurityTube.net
What
does
all
this
mean?
Start
and
End
Address
Offset
in
file
Inode
number
File
Path
of
the
secSon
for
memory
mapped
files.
0
otherwise.
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
4.
Hello
World
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
IA-‐32
InstrucSon
Set
©SecurityTube.net
Programming
in
Assembly
NASM
DocumentaSon:
hLp://nasm.us/
©SecurityTube.net
Hello
World!
Entry
Point
of
Program?
_start:
Exit Gracefully!
©SecurityTube.net
Why
System
Calls?
• Imagine
if
you
had
to
write
code
from
scratch
to:
– write
to
disk
– print
on
screen
– …
©SecurityTube.net
How
do
System
calls
work?
©SecurityTube.net
IA-‐32
Mechanism
to
invoke
System
Call
• int 0x80
• SYSENTER
©SecurityTube.net
Where
are
these
system
calls
defined?
©SecurityTube.net
write()
©SecurityTube.net
exit
©SecurityTube.net
Invoking
System
Call
with
0x80
EAX
System
Call
Number
Return
Value
in
EAX
©SecurityTube.net
Calling
Write
©SecurityTube.net
Calling
Exit
©SecurityTube.net
Exercise
1.4.1:
GDB
• Use
GDB
to
step
through
the
Hello
World
program
and
observe:
– CPU
Registers
– Memory
LocaSon
– …
Please
Register
for
this
course
to
receive
the
soluSon
video
for
this
exercise.
hLp://SecurityTube-‐Training.com
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
Exercise
1.4.1:
GDB
• Use
GDB
to
step
through
the
Hello
World
program
and
observe:
– CPU
Registers
– Memory
LocaSon
– …
Please
Register
for
this
course
to
receive
the
soluSon
video
for
this
exercise.
hLp://SecurityTube-‐Training.com
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
5.
Data
Types
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Fundamental
Data
Types
• Byte – 8 bits
31 0
Sign Bit
31
30
0
Source:
IA-‐32
Manual
©SecurityTube.net
NASM
…
©SecurityTube.net
Defining
IniSalized
Data
in
NASM
©SecurityTube.net
Declare
UniniSalized
Data
©SecurityTube.net
Special
Tokens
©SecurityTube.net
EQU
and
TIMES
Data:
InstrucSon:
©SecurityTube.net
IA-‐32
uses
LiLle
Endian
format
Low Memory
High Memory
Source:
30
Wikipedia
hLp://en.wikipedia.org/wiki/Endianness
©SecurityTube.net
GDB
hLp://www.securitytube.net/tags/sgde
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
6.
Moving
Data
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
InstrucSon
• Register
• Memory
• Immediate
©SecurityTube.net
MOV
• Allowed
DirecSons
– Between
Registers
– Memory
to
Register
and
Register
to
Memory
– Immediate
Data
to
Register
– Immediate
Data
to
Memory
©SecurityTube.net
LEA
©SecurityTube.net
XCHG
©SecurityTube.net
Stack
©SecurityTube.net
Stack
is
a
LIFO
High
Memory
0xAAAAAAAA
PUSH
–
Pushes
a
value
onto
the
Stack
0x10203040
POP
–
Removes
the
topmost
ESP
value
from
the
Stack
0xA0203040
ESP
–
Should
point
to
top
of
Stack
Low Memory
©SecurityTube.net
Exercise
1.6.1
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Exercise
1.6.1
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
7.
Arithme4c
Instruc4ons
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
EFLAGS
Register
©SecurityTube.net
Exercise
1.7.1
Please
Register
for
this
course
to
receive
the
soluSon
video
for
this
exercise.
hLp://SecurityTube-‐Training.com
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Exercise
1.7.1
©SecurityTube.net
Unsigned
MulSply
(MUL)
AL AX EAX
*
*
*
r/m8
r/m16
r/m32
AX DX AX EDX EAX
AX DX AX EDX EAX
÷
÷
÷
r/m8
r/m16
r/m32
Q AL Q AX Q EAX
R AH R DX R EDX
©SecurityTube.net
Signed
ArithmeSc
• IMUL
• IDIV
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
8.
Logical
Instruc4ons
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Logical
OperaSons
• OR
• XOR
• NOT
©SecurityTube.net
Bitwise
OperaSon
1 1
AND
1 0
| |
1 0
©SecurityTube.net
Other
InstrucSons
• ROR
• ROL
• …
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
9.
Control
Instruc4ons
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Control
InstrucSons
• Branching
– UncondiSonal
–
JMP
– CondiSonal
-‐
Jxx
©SecurityTube.net
JMP
• UncondiSonal
– compare
it
with
the
GOTO
statement
in
C
• Types:
– Near
Jump:
Current
Code
Segment
• Short:
-‐128
to
+127
from
current
posiSon
– Far
Jump:
In
another
Segment
©SecurityTube.net
Jxx
• Jxx
–
CondiSonal
– JZ,
JNZ,
JA,
JAE,
JC,
JNC
etc.
– uses
flags
©SecurityTube.net
Exercise
1.9.1
Please
Register
for
this
course
to
receive
the
soluSon
video
for
this
exercise.
hLp://SecurityTube-‐Training.com
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Exercise
1.9.1
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
10.
Procedures
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Procedure
• CALL Procedure_Name
©SecurityTube.net
Format
of
a
Procedure
ProcedureName:
…
code…
…
code
…
…
code
…
RET
©SecurityTube.net
Arguments
to
a
Procedure
©SecurityTube.net
Saving
and
Restoring
State
• Saving
/
Restoring
– ENTER
/
LEAVE
+
RET
©SecurityTube.net
Exercise
1.10.1
Please
Register
for
this
course
to
receive
the
soluSon
video
for
this
exercise.
hLp://SecurityTube-‐Training.com
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Exercise
1.10.1
©SecurityTube.net
Prologue
and
Epilogue
• Wikipedia:
hLps://en.wikipedia.org/wiki/
FuncSon_prologue
• Space
is
reserved
for
storing
local
variables
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
11.
Strings
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
String
InstrucSons
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
1:
32-‐Bit
ASM
on
Linux
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Syscalls
are
good
but
…
©SecurityTube.net
Things
to
Remember
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
1.
Shellcoding
Basics
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
What
is
Shellcode?
©SecurityTube.net
How
is
Shellcode
delivered?
©SecurityTube.net
Shellcode
Resources
• hLp://www.shell-‐storm.org/
• hLp://exploit-‐db.com
• hLp://www.projectshellcode.com/
©SecurityTube.net
TesSng
Shellcode
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
2.
Exit
Shellcode
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Exit
Shellcode
©SecurityTube.net
Objdump
to
Shellcode
• hLp://www.commandlinefu.com/commands/
view/6051/get-‐all-‐shellcode-‐on-‐binary-‐file-‐
from-‐objdump
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Modifying
Hello
World
• No
hardcoded
addresses
– dynamically
figure
out
address
of
“Hello
World”
string
©SecurityTube.net
JMP-‐CALL-‐POP
JMP
short
Call_shellcode:
shellcode:
pop
ecx
….
…
…
Call_shellcode:
call
shellcode:
HelloWorld
db
“Hello
World!”
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Using
the
Stack
©SecurityTube.net
Stack
grows
from
High
memory
to
Low
memory
High Memory
H E L L O W O R L D \n 0x00
Low Memory
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Execute
a
new
program
©SecurityTube.net
Execve
©SecurityTube.net
Approach
IniSal
String
©SecurityTube.net
Loading
the
Registers
ESI
/bin/bash
0x0
Addr
0x00000000
©SecurityTube.net
Is
there
a
need
for
exit()
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Stack
Push
Low
Memory
High
Memory
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
XOR
A
B
A
xor
B
0
0
0
1
1
0
1
0
1
0
1
1
©SecurityTube.net
What
does
this
mean
for
us?
©SecurityTube.net
Too
much
text
can
kill
a
concept
J
Original
Shellcode
XOR
||
Decode
Shellcode
XOR
Decoder
Stub
0xb8
0x01
0x06
0xab
………
Original
Shellcode
XOR
Decoder
Stub
0x12
0xab
0xac
0x01
………
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Metasploit
Payloads
©SecurityTube.net
Metasploit
Encoders
©SecurityTube.net
Leverage
Metasploit
©SecurityTube.net
AV
and
IDS
Evasion
©SecurityTube.net
Custom
Encoder
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
NOT
Encoder
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
InserSon
Encoder?
Ayer InserSon 0x12 0xaa 0xab 0xaa 0xac 0xaa 0x01 0xaa ………
Inser4on Decoder Stub 0x12 0xaa 0xab 0xaa 0xac 0xaa 0x01 0xaa ………
Original
Shellcode
Inser4on
Decoder
Stub
0x12
0xab
0xac
0x01
………
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Ton
of
instrucSons!
• FPU
• MMX
• SSE
• SSE2
©SecurityTube.net
Advantages
©SecurityTube.net
MMX
based
XOR
Decoder
• SIMD
–
Single
instrucSon
mulSple
data
©SecurityTube.net
Using
the
FPU
for
GetPC
Source: hLp://skypher.com/wiki/index.php/Hacking/Shellcode/GetPC
FSTENV stores control, status and tag word, instruc4on pointer, data pointer and last opcode
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
12.
Polymorphism
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Easy
FingerprinSng
of
Basic
Shellcode
• DetecSon simple
©SecurityTube.net
Encoding
and
EncrypSon
©SecurityTube.net
Imagine
IF
©SecurityTube.net
Origins
in
the
Virus
World
Source: hLp://www.phrack.org/issues.html?issue=61&id=9#arScle
©SecurityTube.net
Basic
Principle
of
Create
Polymorphic
Shellcode
• Replace
instrucSons
with
equivalent
funcSonality
ones
©SecurityTube.net
Polymorphic
Engines
• ADMutate:
– hLp://www.ktwo.ca/readme.html
– hLp://www.youtube.com/watch?v=XMt9ExL9I00
• CLET
– hLp://www.phrack.org/issues.html?
issue=61&id=9#arScle
• VX
Heavens
Mirror
– hLp://download.adamas.ai/dlbase/Stuff/VX
%20Heavens%20Library/staSc/vdat/mainmenu.htm
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Should
I
run
this?
©SecurityTube.net
Analyzing
Shellcode
• Use GDB
• Use Ndisasm
©SecurityTube.net
Staged
Shellcode
©SecurityTube.net
Case
Study:
Analyzing
Staged
Shellcode
Source: hLp://www.shell-‐storm.org/shellcode/files/shellcode-‐824.php
©SecurityTube.net
Network
based
second
stage
loading
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Shell_XXX_TCP
©SecurityTube.net
Libemu
hLp://libemu.carnivore.it/
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
2:
IntroducSon
to
Shellcoding
14.
Crypters
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Crypters
©SecurityTube.net
RC4
• 2
Step
process:
– Key
Scheduling
Algorithm
©SecurityTube.net
WriSng
an
RC4
Shellcode
Crypter
in
C
• EncrypSon
Phase:
– For
a
given
key,
encrypts
shellcode
• DecrypSon
Phase:
– For
the
same
key,
decrypts
shellcode
– Executes
it
©SecurityTube.net
Chaining
Methods
• Create Shellcode
©SecurityTube.net
RC4
in
Assembly
• hLps://thunked.org/programming/rc4-‐in-‐
assembly-‐t23.html
• hLp://youritguy.wordpress.com/2010/06/13/
adler-‐32-‐and-‐rc4-‐in-‐inline-‐assembly/
• hLp://nayuki.eigenstate.org/page/rc4-‐cipher-‐
in-‐x86-‐assembly
©SecurityTube.net
Hyperion
• PE Cryptor
• hLp://www.exploit-‐db.com/wp-‐content/
themes/exploit/docs/18849.pdf
©SecurityTube.net
SecurityTube
Linux
Assembly
Expert
(SLAE32)
Training:
hLp://www.SecurityTube-‐Training.com
Community:
hLp://www.SecurityTube.net
Vivek
Ramachandran
SWSE,
SMFE,
SPSE,
SGDE,
SISE,
SLAE32
Course
Instructor
©SecurityTube.net
NoSce
©SecurityTube.net
Module
3:
CerSficaSon
Exam
hLp://SecurityTube-‐Training.com
©SecurityTube.net
Exam
Format
©SecurityTube.net
Assignment
#1
©SecurityTube.net
Assignment
#2
©SecurityTube.net
Assignment
#3
©SecurityTube.net
Assignment
#4
©SecurityTube.net
Assignment
#5
©SecurityTube.net
Assignment
#6
©SecurityTube.net
Assignment
#7
©SecurityTube.net
Blog
post
must
menSon
©SecurityTube.net
EvaluaSon
Criteria
©SecurityTube.net
Extra
Points
J
• PosSng
addiSonal
new
shellcodes
beyond
the
assignments
(10
points)
– Shell-‐Storm.org
– Exploit-‐db.com
(10
points)
• Community
InteracSon
(5
points)
– ChaLer
on
TwiLer,
Facebook
– Comments
on
Blog
posts
©SecurityTube.net
Submission
Format
• Email
contains:
– Links
to
all
7
blog
posts
– Link
to
Gitgub
account
where
code
is
stored
– Link
to
Shell-‐Storm
/
Exploit-‐db
submissions
– Link
to
TwiLer
/
Facebook
if
posted
there
©SecurityTube.net