SlideShare a Scribd company logo
1 of 71
Download to read offline
EVERYONE HAS
HIS OR HER OWN FUZZER
BEIST (BEISTLAB/GRAYHASH)
WWW.CODEENGN.COM
CODEENGN REVERSEENGINEERING CONFERENCE
1
About me
• From beistlab
• Principal research consultant at GrayHash
• BoB mentor
• Over 10 win/run hacking contests (5 times defcon CTF quals)
• ZDI RECON TIPPINGPOINT win /iDefense bounty
• Consulting for big companies
• Hunting bugs is my favorite hobby
GRAYHASH
2
About this talk
• 70% = Fuzzing
• 30% = Word for young students
GRAYHASH
3
What is fuzzing
• Software testing technic
• Automated or semi-automated
• Security field uses this for finding 0 days
• Mostly for hunting mem-corruption style
• Many bugs come from this way these days
GRAYHASH
4
Fuzzing popular?
• Indeed! Security conference always has
fuzzing talks these days.
• No strong evidence but you could picture
that over 50% bugs are from fuzzing
GRAYHASH
5
2 fuzzing ways
• Dumb fuzzing
• Smart fuzzing
GRAYHASH
6
Dumb fuzzing
• Random mutation and run cases
• You can do this within only 10 line python
(But dumb fuzzing still works)
import os, sys, random
def go():
return random.randrange(0, 0x100)
filesize = os.path.getsize("./sample.xxx")
fp = open("./sample.xxx", "rb++")
tmpoffset = random.randrange(0, filesize)
fp.seek(tmpoffset, 0)
fp.write("%c%c%c%c" % (go(), go(), go(), go()))
fp.close()
os.system("target_binary sample.xxx")
GRAYHASH
7
Smart fuzzing
• In security field, something called smart
fuzzing if it’s not just dumb fuzzing
• Basically no clear definition for that
• But let’s tour to see what smart fuzzing
people do
GRAYHASH
8
What you need to do
smart fuzzing
• No specific skills required
• But there are some general technics
• Each of them is very simple but it’s hard
when you put it all together
GRAYHASH
9
Intermediate Language
• Not necessary but this reduces the
complexity of analysis a lot
• Done by a simpler intermediate language
engine for assembly language
• The key is
- to make it more simpler
- to make it portable
GRAYHASH
10
Intermediate Language
• Many semantics per intel instruction
• How is the complexity of “inc” instruction
• Exceptions - 5 conditions
- GP(0), SS(0), PF(fault-code),AC(0), UD
• Side effects - OF, SF, ZF,AF, PF
• Very useful for static analysis
GRAYHASH
11
Intermediate Language
• Many CPU platforms (PC, Phones ++)
• x86, x64, mips, arm, powerpc
• intel, arm, and so on can be represented
• Reference: Zynamics’s REIL
x86 asm arm asm
One IL
GRAYHASH
12
Intermediate Language
[x86 to REIL]
GRAYHASH
13
Symbolic Execution
• Good money example
• How do you get into block 1 to call strcpy()
function?
if (a==1337)
strcpy(a,b);
else
printf(“x”);
{block 1}
{block 2}
GRAYHASH
14
Symbolic Execution
func(a, b):
a = a + b
b = b + b
a = a - b
if a == 2:
strcpy()
else:
exit
[code] [symbolic expression]
GRAYHASH
15
Symbolic Execution
• Then we pass symbolic expression to SMT
(or something else)
• To know the condition to get into the path
• Security field uses SAT/SMT to do code
coverage and find vulnerabilities
• Academy meet-up also has those topics
• Reference: SAT/SMT summer school,
SAGE(MS), CMU’s AEG
GRAYHASH
16
Taint analysis
• Usually to track register or data that
influences others
• “edx” will be user-controllable after “pop edx”
• We want to know if we can control “ecx”
pop edx
pop ebx
add ebx, edx
mov eax, ebx
mov ecx, [eax]
rep movsd
GRAYHASH
17
Generating cases based
on file specification
• If there is a file specification, hackers can
reference it to generate better cases
• Example:
[HWP specification]
GRAYHASH
18
Generating cases based
on whitebox fuzzing
• In systematic dynamic test generation
• Fuzzer tracks down its flow and get useful
information while dynamic program analysis
• This can be done by symbolic execution /
taint analysis
GRAYHASH
19
Generating cases based
on whitebox fuzzing
• This is a very tough challenge
• Constraint solving could be imprecise due
to the complexity
- floating-point operations
- Sys calls
- etc
• References: MS’s SAGE
GRAYHASH
20
Comparing flows
• You run 2 file cases and record flows
• And compare the 2 flows
• Figure out the difference
• which position of file data is used by target
program
GRAYHASH
21
Comparing flows
• Assume the flow gets
to bb_n+1
• Find condition_n
• Evaluate how we can
get into bb_n
• Figure out we have to
change EAX reg
(Changing eflags
directly would have
many falses)
bb_n+1
bb_n
condition_n
GRAYHASH
22
Comparing flows
A
B
C
D
E
A
B
C
D
E
[record 1] [record 2]
GRAYHASH
23
Comparing flows
• More advantage: you can know which
position is actual affecting data
• You don’t have to spend a huge time to fuzz
useless data
- data that don’t need to fuzz
- data that need to fuzz
[A file]
GRAYHASH
24
Blackbox fuzzing but
smart
• 0 knowledge fuzzing
• But it’s not super random
• This recognizes type of data and gives them
some special sauce
• Radamsm: Collection of model-inferred-
based fuzzers with some elements
GRAYHASH
25
Blackbox fuzzing but
smart (Radamsa)
grafu: Mutate a grammar inferred from the data.
fubwt: Mutate the with a disturbed Burrows-Wheeler transformation.
permu: Permute content around the edges of common substrings.
rambo: A traditional file fuzzer making simple changes to raw data.
enumr: Enumerate all byte sequences after a few shared prefixes.
stutr: Add repetitions to the data.
tehfu: Build a tree using simple rules and mutate it.
cutup: Splice and permute the contents of the files.
flipr: A bit flipper.
walkr: Make systematically mutations to all positions of all files.
range: generate chunks of random data
noise: mix sample data and noise signals together
forml: generate data from random formal languages
proby: Fill holes from files by using statistics.
surfy: Jump between locations with common data.
small: Test case minimizer. Hopefully not effective if used as a fuzzer.
[radamsa modules]
GRAYHASH
26
Blackbox fuzzing but
smart
• Seems lower effort required if we compare
to other smart fuzzers, but
GRAYHASH
27
Distributed fuzzing
• There are firms who spend $$$ for
distributed fuzzing
• Huge time needed to develop smart
fuzzers
• Imagine $100,000 smart fuzzer against
$100,000 many distributed fuzzing
• Not-bad-code-coverage without crazy
crazy effort = DEAL!
GRAYHASH
28
Runtime function
fuzzing
• RTL function is everywhere
• Super fast fuzzing if functions don’t have any
system API (interrupt/sysenter/etc)
• What if you use GPU for RTL func fuzzing?
• Challenge:
- Recognizing arguments and their types
- If possible to hit the RTL function
- If possible to manipulate values of arguments
GRAYHASH
29
Runtime function
fuzzing
• void test(char *str)
• str needs a string pointer not int or smth
• Type inference needs: guess how hex-rays
displays variable types?
• Think: if a RTL func has non-RTL functions, is it still a RTL
func?
GRAYHASH
30
USB fuzzing
• We can be 007
• There is a locked computer
• Put your usb into the computer and it pops
up calc.exe
• How? Abuse USB protocol or NTFS bugs
GRAYHASH
31
Filesystem fuzzing
• NTFS had (or still has) a lot of problems
• You may have kernel BSOD in 5 mins
• No need to fuzz physically but use a
mounting program
• Reference: google ‘usb or filesystem fuzzing’
GRAYHASH
32
Memory snapshot
fuzzing
• Motivation: to speed up fuzzing
• Example) The red one is the target to fuzz
[normal fuzzing]
GRAYHASH
33
Memory snapshot
fuzzing
• Snapshot and fuzzing
• Much more faster
• Challenge: Recover File handle/syscall/external data
[snapshot fuzzing]
GRAYHASH
34
Hunting interesting
functions
• Modern programs have countless functions
• If you can know which function is
interesting, your life would be easier
• Helpful both watching and fuzzing
GRAYHASH
35
Hunting interesting
functions
• No argument (Except global variables used)
• No loop
void func(char *str) {
char buf[256];
int x;
for (x=0;x<=sizoef(buf);x++)
{
buf[x] = str[0];
}
.....
.....
}
[vulnerable code]
GRAYHASH
36
Hunting interesting
functions
• Loop detection is needed
• There are many loop types
for i in range(0, 0x100):
print “%d 0day.”
exit
for loop
print exit
GRAYHASH
37
Hunting interesting
functions
• Loop but ecx or esi is constant
• No interesting function calls (strcpy, ++)
• No integer operation mismatches (ja/jb vs jg/jl)
• Reference: Halvar’s BH 2004, Edgar’s Syscan 2012
GRAYHASH
38
!exploitable
• When you fuzz, you get MANY BUGS (crashes!)
GRAYHASH
39
!exploitable
• How do you figure out which one is
exploitable but you have 10,000 crashes?
• Automation is needed
fuzzing
crash
1
crash
2
Good!
Bad!
GRAYHASH
40
!exploitable
• MS provides crash analyzer “!exploitable”
• It says if a crash is exploitable or not
• It assumes an attacker can control these 3
- destination address
- move length
- source address
- like memcpy(dst, src, length) is under him
GRAYHASH
41
Be imaginative
• No limit to fuzzing target
• SYSCAL/SMS/Baseband/SCADA(PLC)
• URL/VM-Communication/Filesystem
• CPU instruction
- recent instructions are complex
GRAYHASH
42
Even you know all
those issues
• You may think you’re very behind
• Since 2008, SAGE has been running 24/7 on an average of 100-plus machines/
cores automatically fuzzing hundreds of applications in Microsoft security testing
labs.This is more than 300 machine- years and the largest computational usage
ever for any SMT (Satisfiability ModuloTheories) solver, with more than 1 billion
constraints processed to date.
• And there are definitely more groups who
do advanced fuzzing
43
Tips for beginners
GRAYHASH
44
Setting your basement
• OS:Windows XP first!
- Easy to debugging
- Almost every RE tool works on XP
- (I use linux for developing tools)
• Find bugs and debug/exploit them upon XP
• And port it for other versions of OS (win7/8)
GRAYHASH
45
Setting your basement
• VMWARE (or otherVM) is mandatory
• Use snapshots
• Your OS will be messed up by your fuzzer
• Rebooting doesn’t work time to time
• The migration feature is very gold
GRAYHASH
46
Language
• Don’t listen to others
- how many friends of you have given you a tip for learning
english? how many tips worked for you?
• Just choose one whatever you like
• But if you still need a recommendation,
python is my answer
• Many hack libraries are written in python
• Ruby is getting popular
GRAYHASH
47
Language
• If you use C for fuzzing because you just
want to feel you’re l33t, you’re wrong
• Realize what is your goal
• (No offense, C is my favorite language and I know many good
hackers doing fuzzing with C because they love C.)
GRAYHASH
48
RE tools around you
• Do not invent wheels again
• A bunch of tools out there which you can
use for making a homebrew fuzzer
• Example)
radamsm + little python script = win
GRAYHASH
49
But do not believe
tools too much
• Unfortunately, some RE tools are naive
• You may spend weeks to fix tools’ bugs
• You may be end up with developing your
own scripts / engines
GRAYHASH
50
Figure out what
features you can add
• Great tools out there
• Pitch, Sully, and etc
• But you never get satisfied with them
• Find what you can make it better
GRAYHASH
51
Spend your time right
• Imagine we have 2 problems
• One thing very challenge but you may
improve only 2% better performance
• Other one very easy and you may improve
20% better performance
• Also, I’d buy a new computer rather than making
2% better performance spending 50 hours
GRAYHASH
52
Hack like a champion
• Your fuzzer might be very naive and silly
• But not many people really do fuzzing
• Feel confident! Hack like a champ!
GRAYHASH
53
Code coverage is most
important
• Try to find a way to do better coverage
• Even you spend 10000 hour fuzzing, it
doesn’t say you’re doing right
• Always check if you’re doing right
• For example: HWP takes compressed files
in default which means you’re not fuzzing
HWP format unless you decompress it
GRAYHASH
54
Understand the
principles first!
• You may get exceptions (crashes) but you’re
doing wrong if you have no ideas about them
• GO READ “The art of security software
assessment” if you’ve not read!
• Or you only look for strcpy() FOREVER
GRAYHASH
55
Mom, I hate quiz
Figure out what is wrong with this code
56
snprintf trick
int num;
char buf[256];
num = snprintf(buf, sizeof(buf), argv[1]);
if(num >= sizeof(buf) - 2) {
printf(“I hate youn”);
exit(0);
}
#1
57
snprintf trick
int num;
char buf[256];
num = snprintf(buf, sizeof(buf), argv[1]);
if(num >= sizeof(buf) - 2) {
printf(“I hate youn”);
exit(0);
}
- OS dependency, works differently
- Windows against Linux
- Return value and null-termination
#1
58
GetFullPathName bad
if(GetFullPathName(c_file, length, buf, &o) ==0) {
printf(“badn”);
exit(0);
}
#2
59
GetFullPathName bad
if(GetFullPathName(c_file, length, buf, &o) ==0) {
printf(“badn”);
exit(0);
}
- API understand (Return value)
- if buf is not enough to contain,
“RET” is the number required to do
#2
60
GetFullPathName bad
If the lpBuffer buffer is too small to contain the path, the
return value is the size, inTCHARs, of the buffer that is
required to hold the path and the terminating null
character.
- And the API doesn’t touch the lpBuffer
- Uninitialized is a very good friend *sometimes*
[MSDN]
#2
61
wcsncpy madness
wchar_t buf[256];
wcsncpy(buf, user_controlled_buf, sizeof(buf));
#3
62
wcsncpy madness
wchar_t buf[256];
wcsncpy(buf, user_controlled_buf, sizeof(buf));
- API understand (Arguments)
- The 3rd argument is number in wide characters
#3
63
Mom, I told you
I hate quiz!!!!
64
Auditing code
• Auditing code makes you a better fuzzing
programmer
• Find nice ideas while auditing code (or
reversing the target)
• And apply them to your fuzzer
GRAYHASH
65
Easy target first
• GRETECH (Gomplayer)
• ESTSOFT (Alzip,Alyac)
• HANGUL HWP
GRAYHASH
66
Next level
• FLASH
• PDF
• MS WORD
GRAYHASH
67
Next next level
• Apache, PHP, IIS, SSH of course
• And SMS, PIC, Baseband and etc
• It’s not about fuzzing itself
• How to set up your fuzzer on them?
• Even how do you code upon the environments?
GRAYHASH
68
ETC
• Fun is first, you don’t have to be a pro like
Dr. Charlie Miller
• Figure out values of your bugs
• Your *easy* bug might be my *easy* bug
69
Extra tips (Last word)
• Have fun with hunting attack vectors
• Go deep
• Contact people who do actual research
- co-work is fantastic
GRAYHASH
70
Q/A
Thanks to codeengn and certlab
Passket will buy beer at after party
Drink free beer
SECUINSIDE will be on 11th July
GRAYHASH
WWW.CODEENGN.COM
CODEENGN REVERSEENGINEERING CONFERENCE
71

More Related Content

What's hot

Pwning in c++ (basic)
Pwning in c++ (basic)Pwning in c++ (basic)
Pwning in c++ (basic)Angel Boy
 
Intel processors(history - products)
Intel   processors(history - products)Intel   processors(history - products)
Intel processors(history - products)Mohammed Hilal
 
The Art of Exploiting Unconventional Use-after-free Bugs in Android Kernel by...
The Art of Exploiting Unconventional Use-after-free Bugs in Android Kernel by...The Art of Exploiting Unconventional Use-after-free Bugs in Android Kernel by...
The Art of Exploiting Unconventional Use-after-free Bugs in Android Kernel by...CODE BLUE
 
Understanding Active Directory Enumeration
Understanding Active Directory EnumerationUnderstanding Active Directory Enumeration
Understanding Active Directory EnumerationDaniel López Jiménez
 
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テストryohji ikebe
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
たのしいPwn 公開用
たのしいPwn 公開用たのしいPwn 公開用
たのしいPwn 公開用uu ymd
 
Return to dlresolve
Return to dlresolveReturn to dlresolve
Return to dlresolveAngel Boy
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2uchan_nos
 
Practical Malware Analysis: Ch 9: OllyDbg
Practical Malware Analysis: Ch 9: OllyDbgPractical Malware Analysis: Ch 9: OllyDbg
Practical Malware Analysis: Ch 9: OllyDbgSam Bowne
 
並列化による高速化
並列化による高速化 並列化による高速化
並列化による高速化 sakura-mike
 
Linux Binary Exploitation - Heap Exploitation
Linux Binary Exploitation - Heap Exploitation Linux Binary Exploitation - Heap Exploitation
Linux Binary Exploitation - Heap Exploitation Angel Boy
 
PowerShell for Penetration Testers
PowerShell for Penetration TestersPowerShell for Penetration Testers
PowerShell for Penetration TestersNikhil Mittal
 
How to find_vulnerability_in_software
How to find_vulnerability_in_softwareHow to find_vulnerability_in_software
How to find_vulnerability_in_softwaresanghwan ahn
 
Practical Malware Analysis: Ch 15: Anti-Disassembly
Practical Malware Analysis: Ch 15: Anti-DisassemblyPractical Malware Analysis: Ch 15: Anti-Disassembly
Practical Malware Analysis: Ch 15: Anti-DisassemblySam Bowne
 
Pharo 11: A stabilization release
Pharo 11: A stabilization releasePharo 11: A stabilization release
Pharo 11: A stabilization releaseESUG
 
Processor powerpoint
Processor powerpointProcessor powerpoint
Processor powerpointbrennan_jame
 
バイナリ解析入門
バイナリ解析入門バイナリ解析入門
バイナリ解析入門aksechack0001
 
Linux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowLinux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowAngel Boy
 

What's hot (20)

Pwning in c++ (basic)
Pwning in c++ (basic)Pwning in c++ (basic)
Pwning in c++ (basic)
 
Bh eu 05-kaminsky
Bh eu 05-kaminskyBh eu 05-kaminsky
Bh eu 05-kaminsky
 
Intel processors(history - products)
Intel   processors(history - products)Intel   processors(history - products)
Intel processors(history - products)
 
The Art of Exploiting Unconventional Use-after-free Bugs in Android Kernel by...
The Art of Exploiting Unconventional Use-after-free Bugs in Android Kernel by...The Art of Exploiting Unconventional Use-after-free Bugs in Android Kernel by...
The Art of Exploiting Unconventional Use-after-free Bugs in Android Kernel by...
 
Understanding Active Directory Enumeration
Understanding Active Directory EnumerationUnderstanding Active Directory Enumeration
Understanding Active Directory Enumeration
 
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
たのしいPwn 公開用
たのしいPwn 公開用たのしいPwn 公開用
たのしいPwn 公開用
 
Return to dlresolve
Return to dlresolveReturn to dlresolve
Return to dlresolve
 
30分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.230分で分かる!OSの作り方 ver.2
30分で分かる!OSの作り方 ver.2
 
Practical Malware Analysis: Ch 9: OllyDbg
Practical Malware Analysis: Ch 9: OllyDbgPractical Malware Analysis: Ch 9: OllyDbg
Practical Malware Analysis: Ch 9: OllyDbg
 
並列化による高速化
並列化による高速化 並列化による高速化
並列化による高速化
 
Linux Binary Exploitation - Heap Exploitation
Linux Binary Exploitation - Heap Exploitation Linux Binary Exploitation - Heap Exploitation
Linux Binary Exploitation - Heap Exploitation
 
PowerShell for Penetration Testers
PowerShell for Penetration TestersPowerShell for Penetration Testers
PowerShell for Penetration Testers
 
How to find_vulnerability_in_software
How to find_vulnerability_in_softwareHow to find_vulnerability_in_software
How to find_vulnerability_in_software
 
Practical Malware Analysis: Ch 15: Anti-Disassembly
Practical Malware Analysis: Ch 15: Anti-DisassemblyPractical Malware Analysis: Ch 15: Anti-Disassembly
Practical Malware Analysis: Ch 15: Anti-Disassembly
 
Pharo 11: A stabilization release
Pharo 11: A stabilization releasePharo 11: A stabilization release
Pharo 11: A stabilization release
 
Processor powerpoint
Processor powerpointProcessor powerpoint
Processor powerpoint
 
バイナリ解析入門
バイナリ解析入門バイナリ解析入門
バイナリ解析入門
 
Linux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflowLinux Binary Exploitation - Stack buffer overflow
Linux Binary Exploitation - Stack buffer overflow
 

Viewers also liked

opensuse conference 2015: security processes and technologies for Tumbleweed
opensuse conference 2015: security processes and technologies for Tumbleweedopensuse conference 2015: security processes and technologies for Tumbleweed
opensuse conference 2015: security processes and technologies for TumbleweedMarcus Meissner
 
Deview 발표자료 v1.5.3
Deview 발표자료 v1.5.3Deview 발표자료 v1.5.3
Deview 발표자료 v1.5.3NAVER D2
 
Art of hacking Push, Notifacation
Art of hacking Push, NotifacationArt of hacking Push, Notifacation
Art of hacking Push, NotifacationDennis Kim
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석GangSeok Lee
 
K-Wireless Router hacking
K-Wireless Router hackingK-Wireless Router hacking
K-Wireless Router hackingperillamint
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study ENGangSeok Lee
 
Inc0gnito fuzzing for_fun_sweetchip
Inc0gnito fuzzing for_fun_sweetchipInc0gnito fuzzing for_fun_sweetchip
Inc0gnito fuzzing for_fun_sweetchipsweetchip
 
[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware TrackerGangSeok Lee
 
(FICON2015) #2 어떻게 조사할 것인가?
(FICON2015) #2 어떻게 조사할 것인가?(FICON2015) #2 어떻게 조사할 것인가?
(FICON2015) #2 어떻게 조사할 것인가?plainbit
 
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼GangSeok Lee
 
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안GangSeok Lee
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KOGangSeok Lee
 
IoT Security: Problems, Challenges and Solutions
IoT Security: Problems, Challenges and SolutionsIoT Security: Problems, Challenges and Solutions
IoT Security: Problems, Challenges and SolutionsLiwei Ren任力偉
 

Viewers also liked (16)

opensuse conference 2015: security processes and technologies for Tumbleweed
opensuse conference 2015: security processes and technologies for Tumbleweedopensuse conference 2015: security processes and technologies for Tumbleweed
opensuse conference 2015: security processes and technologies for Tumbleweed
 
Deview 발표자료 v1.5.3
Deview 발표자료 v1.5.3Deview 발표자료 v1.5.3
Deview 발표자료 v1.5.3
 
Art of hacking Push, Notifacation
Art of hacking Push, NotifacationArt of hacking Push, Notifacation
Art of hacking Push, Notifacation
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
 
codeache
codeachecodeache
codeache
 
K-Wireless Router hacking
K-Wireless Router hackingK-Wireless Router hacking
K-Wireless Router hacking
 
2015 SW마에스트로 100+ 컨퍼런스_Hacking IoT
2015 SW마에스트로 100+ 컨퍼런스_Hacking IoT2015 SW마에스트로 100+ 컨퍼런스_Hacking IoT
2015 SW마에스트로 100+ 컨퍼런스_Hacking IoT
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
 
Inc0gnito fuzzing for_fun_sweetchip
Inc0gnito fuzzing for_fun_sweetchipInc0gnito fuzzing for_fun_sweetchip
Inc0gnito fuzzing for_fun_sweetchip
 
[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker
 
(FICON2015) #2 어떻게 조사할 것인가?
(FICON2015) #2 어떻게 조사할 것인가?(FICON2015) #2 어떻게 조사할 것인가?
(FICON2015) #2 어떻게 조사할 것인가?
 
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
 
Hacking IoT
Hacking IoTHacking IoT
Hacking IoT
 
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
 
IoT Security: Problems, Challenges and Solutions
IoT Security: Problems, Challenges and SolutionsIoT Security: Problems, Challenges and Solutions
IoT Security: Problems, Challenges and Solutions
 

Similar to [2012 CodeEngn Conference 06] beist - Everyone has his or her own fuzzer

Exploitation and State Machines
Exploitation and State MachinesExploitation and State Machines
Exploitation and State MachinesMichael Scovetta
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit TestingDmitry Vyukov
 
Debugging multiplayer games
Debugging multiplayer gamesDebugging multiplayer games
Debugging multiplayer gamesMaciej Siniło
 
Make static instrumentation great again, High performance fuzzing for Windows...
Make static instrumentation great again, High performance fuzzing for Windows...Make static instrumentation great again, High performance fuzzing for Windows...
Make static instrumentation great again, High performance fuzzing for Windows...Lucas Leong
 
You didnt see it’s coming? "Dawn of hardened Windows Kernel"
You didnt see it’s coming? "Dawn of hardened Windows Kernel" You didnt see it’s coming? "Dawn of hardened Windows Kernel"
You didnt see it’s coming? "Dawn of hardened Windows Kernel" Peter Hlavaty
 
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...Alexandre Moneger
 
NBTC#2 - Why instrumentation is cooler then ice
NBTC#2 - Why instrumentation is cooler then iceNBTC#2 - Why instrumentation is cooler then ice
NBTC#2 - Why instrumentation is cooler then iceAlexandre Moneger
 
Who go Types in my Systems Programing!
Who go Types in my Systems Programing!Who go Types in my Systems Programing!
Who go Types in my Systems Programing!Jared Roesch
 
Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016bugcrowd
 
Retaining globally distributed high availability
Retaining globally distributed high availabilityRetaining globally distributed high availability
Retaining globally distributed high availabilityspil-engineering
 
Stripe CTF3 wrap-up
Stripe CTF3 wrap-upStripe CTF3 wrap-up
Stripe CTF3 wrap-upStripe
 
DEFCON 23 - Jason Haddix - how do i shot web
DEFCON 23 - Jason Haddix - how do i shot webDEFCON 23 - Jason Haddix - how do i shot web
DEFCON 23 - Jason Haddix - how do i shot webFelipe Prado
 
Rainbow Over the Windows: More Colors Than You Could Expect
Rainbow Over the Windows: More Colors Than You Could ExpectRainbow Over the Windows: More Colors Than You Could Expect
Rainbow Over the Windows: More Colors Than You Could ExpectPeter Hlavaty
 
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013midnite_runr
 
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...bugcrowd
 
Gopher in performance_tales_ms_go_cracow
Gopher in performance_tales_ms_go_cracowGopher in performance_tales_ms_go_cracow
Gopher in performance_tales_ms_go_cracowMateuszSzczyrzyca
 
Giraph at Hadoop Summit 2014
Giraph at Hadoop Summit 2014Giraph at Hadoop Summit 2014
Giraph at Hadoop Summit 2014Claudio Martella
 
Reverse Engineering the TomTom Runner pt. 1
Reverse Engineering the TomTom Runner pt. 1 Reverse Engineering the TomTom Runner pt. 1
Reverse Engineering the TomTom Runner pt. 1 Luis Grangeia
 
Sensu and Sensibility - Puppetconf 2014
Sensu and Sensibility - Puppetconf 2014Sensu and Sensibility - Puppetconf 2014
Sensu and Sensibility - Puppetconf 2014Tomas Doran
 

Similar to [2012 CodeEngn Conference 06] beist - Everyone has his or her own fuzzer (20)

Exploitation and State Machines
Exploitation and State MachinesExploitation and State Machines
Exploitation and State Machines
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit Testing
 
Debugging multiplayer games
Debugging multiplayer gamesDebugging multiplayer games
Debugging multiplayer games
 
Make static instrumentation great again, High performance fuzzing for Windows...
Make static instrumentation great again, High performance fuzzing for Windows...Make static instrumentation great again, High performance fuzzing for Windows...
Make static instrumentation great again, High performance fuzzing for Windows...
 
You didnt see it’s coming? "Dawn of hardened Windows Kernel"
You didnt see it’s coming? "Dawn of hardened Windows Kernel" You didnt see it’s coming? "Dawn of hardened Windows Kernel"
You didnt see it’s coming? "Dawn of hardened Windows Kernel"
 
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
BSides LV 2016 - Beyond the tip of the iceberg - fuzzing binary protocols for...
 
NBTC#2 - Why instrumentation is cooler then ice
NBTC#2 - Why instrumentation is cooler then iceNBTC#2 - Why instrumentation is cooler then ice
NBTC#2 - Why instrumentation is cooler then ice
 
Who go Types in my Systems Programing!
Who go Types in my Systems Programing!Who go Types in my Systems Programing!
Who go Types in my Systems Programing!
 
Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016
 
Retaining globally distributed high availability
Retaining globally distributed high availabilityRetaining globally distributed high availability
Retaining globally distributed high availability
 
Stripe CTF3 wrap-up
Stripe CTF3 wrap-upStripe CTF3 wrap-up
Stripe CTF3 wrap-up
 
Advanced Windows Exploitation
Advanced Windows ExploitationAdvanced Windows Exploitation
Advanced Windows Exploitation
 
DEFCON 23 - Jason Haddix - how do i shot web
DEFCON 23 - Jason Haddix - how do i shot webDEFCON 23 - Jason Haddix - how do i shot web
DEFCON 23 - Jason Haddix - how do i shot web
 
Rainbow Over the Windows: More Colors Than You Could Expect
Rainbow Over the Windows: More Colors Than You Could ExpectRainbow Over the Windows: More Colors Than You Could Expect
Rainbow Over the Windows: More Colors Than You Could Expect
 
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
 
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
 
Gopher in performance_tales_ms_go_cracow
Gopher in performance_tales_ms_go_cracowGopher in performance_tales_ms_go_cracow
Gopher in performance_tales_ms_go_cracow
 
Giraph at Hadoop Summit 2014
Giraph at Hadoop Summit 2014Giraph at Hadoop Summit 2014
Giraph at Hadoop Summit 2014
 
Reverse Engineering the TomTom Runner pt. 1
Reverse Engineering the TomTom Runner pt. 1 Reverse Engineering the TomTom Runner pt. 1
Reverse Engineering the TomTom Runner pt. 1
 
Sensu and Sensibility - Puppetconf 2014
Sensu and Sensibility - Puppetconf 2014Sensu and Sensibility - Puppetconf 2014
Sensu and Sensibility - Puppetconf 2014
 

More from GangSeok Lee

[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 FuzzingGangSeok Lee
 
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?GangSeok Lee
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KOGangSeok Lee
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis ENGangSeok Lee
 
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드GangSeok Lee
 
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)GangSeok Lee
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기GangSeok Lee
 
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다GangSeok Lee
 
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과GangSeok Lee
 
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualizationGangSeok Lee
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploitsGangSeok Lee
 
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론GangSeok Lee
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석GangSeok Lee
 
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽GangSeok Lee
 
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against BotnetGangSeok Lee
 
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들GangSeok Lee
 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이GangSeok Lee
 
[2009 CodeEngn Conference 03] externalist - Reversing Undocumented File Forma...
[2009 CodeEngn Conference 03] externalist - Reversing Undocumented File Forma...[2009 CodeEngn Conference 03] externalist - Reversing Undocumented File Forma...
[2009 CodeEngn Conference 03] externalist - Reversing Undocumented File Forma...GangSeok Lee
 
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...GangSeok Lee
 
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법GangSeok Lee
 

More from GangSeok Lee (20)

[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
 
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
 
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
 
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
 
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
 
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과
 
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
 
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
 
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
 
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
 
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들
 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
 
[2009 CodeEngn Conference 03] externalist - Reversing Undocumented File Forma...
[2009 CodeEngn Conference 03] externalist - Reversing Undocumented File Forma...[2009 CodeEngn Conference 03] externalist - Reversing Undocumented File Forma...
[2009 CodeEngn Conference 03] externalist - Reversing Undocumented File Forma...
 
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
[2009 CodeEngn Conference 03] hkpco - DEFCON CTF 2009 Binary Leetness 100-500...
 
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

[2012 CodeEngn Conference 06] beist - Everyone has his or her own fuzzer

  • 1. EVERYONE HAS HIS OR HER OWN FUZZER BEIST (BEISTLAB/GRAYHASH) WWW.CODEENGN.COM CODEENGN REVERSEENGINEERING CONFERENCE 1
  • 2. About me • From beistlab • Principal research consultant at GrayHash • BoB mentor • Over 10 win/run hacking contests (5 times defcon CTF quals) • ZDI RECON TIPPINGPOINT win /iDefense bounty • Consulting for big companies • Hunting bugs is my favorite hobby GRAYHASH 2
  • 3. About this talk • 70% = Fuzzing • 30% = Word for young students GRAYHASH 3
  • 4. What is fuzzing • Software testing technic • Automated or semi-automated • Security field uses this for finding 0 days • Mostly for hunting mem-corruption style • Many bugs come from this way these days GRAYHASH 4
  • 5. Fuzzing popular? • Indeed! Security conference always has fuzzing talks these days. • No strong evidence but you could picture that over 50% bugs are from fuzzing GRAYHASH 5
  • 6. 2 fuzzing ways • Dumb fuzzing • Smart fuzzing GRAYHASH 6
  • 7. Dumb fuzzing • Random mutation and run cases • You can do this within only 10 line python (But dumb fuzzing still works) import os, sys, random def go(): return random.randrange(0, 0x100) filesize = os.path.getsize("./sample.xxx") fp = open("./sample.xxx", "rb++") tmpoffset = random.randrange(0, filesize) fp.seek(tmpoffset, 0) fp.write("%c%c%c%c" % (go(), go(), go(), go())) fp.close() os.system("target_binary sample.xxx") GRAYHASH 7
  • 8. Smart fuzzing • In security field, something called smart fuzzing if it’s not just dumb fuzzing • Basically no clear definition for that • But let’s tour to see what smart fuzzing people do GRAYHASH 8
  • 9. What you need to do smart fuzzing • No specific skills required • But there are some general technics • Each of them is very simple but it’s hard when you put it all together GRAYHASH 9
  • 10. Intermediate Language • Not necessary but this reduces the complexity of analysis a lot • Done by a simpler intermediate language engine for assembly language • The key is - to make it more simpler - to make it portable GRAYHASH 10
  • 11. Intermediate Language • Many semantics per intel instruction • How is the complexity of “inc” instruction • Exceptions - 5 conditions - GP(0), SS(0), PF(fault-code),AC(0), UD • Side effects - OF, SF, ZF,AF, PF • Very useful for static analysis GRAYHASH 11
  • 12. Intermediate Language • Many CPU platforms (PC, Phones ++) • x86, x64, mips, arm, powerpc • intel, arm, and so on can be represented • Reference: Zynamics’s REIL x86 asm arm asm One IL GRAYHASH 12
  • 13. Intermediate Language [x86 to REIL] GRAYHASH 13
  • 14. Symbolic Execution • Good money example • How do you get into block 1 to call strcpy() function? if (a==1337) strcpy(a,b); else printf(“x”); {block 1} {block 2} GRAYHASH 14
  • 15. Symbolic Execution func(a, b): a = a + b b = b + b a = a - b if a == 2: strcpy() else: exit [code] [symbolic expression] GRAYHASH 15
  • 16. Symbolic Execution • Then we pass symbolic expression to SMT (or something else) • To know the condition to get into the path • Security field uses SAT/SMT to do code coverage and find vulnerabilities • Academy meet-up also has those topics • Reference: SAT/SMT summer school, SAGE(MS), CMU’s AEG GRAYHASH 16
  • 17. Taint analysis • Usually to track register or data that influences others • “edx” will be user-controllable after “pop edx” • We want to know if we can control “ecx” pop edx pop ebx add ebx, edx mov eax, ebx mov ecx, [eax] rep movsd GRAYHASH 17
  • 18. Generating cases based on file specification • If there is a file specification, hackers can reference it to generate better cases • Example: [HWP specification] GRAYHASH 18
  • 19. Generating cases based on whitebox fuzzing • In systematic dynamic test generation • Fuzzer tracks down its flow and get useful information while dynamic program analysis • This can be done by symbolic execution / taint analysis GRAYHASH 19
  • 20. Generating cases based on whitebox fuzzing • This is a very tough challenge • Constraint solving could be imprecise due to the complexity - floating-point operations - Sys calls - etc • References: MS’s SAGE GRAYHASH 20
  • 21. Comparing flows • You run 2 file cases and record flows • And compare the 2 flows • Figure out the difference • which position of file data is used by target program GRAYHASH 21
  • 22. Comparing flows • Assume the flow gets to bb_n+1 • Find condition_n • Evaluate how we can get into bb_n • Figure out we have to change EAX reg (Changing eflags directly would have many falses) bb_n+1 bb_n condition_n GRAYHASH 22
  • 24. Comparing flows • More advantage: you can know which position is actual affecting data • You don’t have to spend a huge time to fuzz useless data - data that don’t need to fuzz - data that need to fuzz [A file] GRAYHASH 24
  • 25. Blackbox fuzzing but smart • 0 knowledge fuzzing • But it’s not super random • This recognizes type of data and gives them some special sauce • Radamsm: Collection of model-inferred- based fuzzers with some elements GRAYHASH 25
  • 26. Blackbox fuzzing but smart (Radamsa) grafu: Mutate a grammar inferred from the data. fubwt: Mutate the with a disturbed Burrows-Wheeler transformation. permu: Permute content around the edges of common substrings. rambo: A traditional file fuzzer making simple changes to raw data. enumr: Enumerate all byte sequences after a few shared prefixes. stutr: Add repetitions to the data. tehfu: Build a tree using simple rules and mutate it. cutup: Splice and permute the contents of the files. flipr: A bit flipper. walkr: Make systematically mutations to all positions of all files. range: generate chunks of random data noise: mix sample data and noise signals together forml: generate data from random formal languages proby: Fill holes from files by using statistics. surfy: Jump between locations with common data. small: Test case minimizer. Hopefully not effective if used as a fuzzer. [radamsa modules] GRAYHASH 26
  • 27. Blackbox fuzzing but smart • Seems lower effort required if we compare to other smart fuzzers, but GRAYHASH 27
  • 28. Distributed fuzzing • There are firms who spend $$$ for distributed fuzzing • Huge time needed to develop smart fuzzers • Imagine $100,000 smart fuzzer against $100,000 many distributed fuzzing • Not-bad-code-coverage without crazy crazy effort = DEAL! GRAYHASH 28
  • 29. Runtime function fuzzing • RTL function is everywhere • Super fast fuzzing if functions don’t have any system API (interrupt/sysenter/etc) • What if you use GPU for RTL func fuzzing? • Challenge: - Recognizing arguments and their types - If possible to hit the RTL function - If possible to manipulate values of arguments GRAYHASH 29
  • 30. Runtime function fuzzing • void test(char *str) • str needs a string pointer not int or smth • Type inference needs: guess how hex-rays displays variable types? • Think: if a RTL func has non-RTL functions, is it still a RTL func? GRAYHASH 30
  • 31. USB fuzzing • We can be 007 • There is a locked computer • Put your usb into the computer and it pops up calc.exe • How? Abuse USB protocol or NTFS bugs GRAYHASH 31
  • 32. Filesystem fuzzing • NTFS had (or still has) a lot of problems • You may have kernel BSOD in 5 mins • No need to fuzz physically but use a mounting program • Reference: google ‘usb or filesystem fuzzing’ GRAYHASH 32
  • 33. Memory snapshot fuzzing • Motivation: to speed up fuzzing • Example) The red one is the target to fuzz [normal fuzzing] GRAYHASH 33
  • 34. Memory snapshot fuzzing • Snapshot and fuzzing • Much more faster • Challenge: Recover File handle/syscall/external data [snapshot fuzzing] GRAYHASH 34
  • 35. Hunting interesting functions • Modern programs have countless functions • If you can know which function is interesting, your life would be easier • Helpful both watching and fuzzing GRAYHASH 35
  • 36. Hunting interesting functions • No argument (Except global variables used) • No loop void func(char *str) { char buf[256]; int x; for (x=0;x<=sizoef(buf);x++) { buf[x] = str[0]; } ..... ..... } [vulnerable code] GRAYHASH 36
  • 37. Hunting interesting functions • Loop detection is needed • There are many loop types for i in range(0, 0x100): print “%d 0day.” exit for loop print exit GRAYHASH 37
  • 38. Hunting interesting functions • Loop but ecx or esi is constant • No interesting function calls (strcpy, ++) • No integer operation mismatches (ja/jb vs jg/jl) • Reference: Halvar’s BH 2004, Edgar’s Syscan 2012 GRAYHASH 38
  • 39. !exploitable • When you fuzz, you get MANY BUGS (crashes!) GRAYHASH 39
  • 40. !exploitable • How do you figure out which one is exploitable but you have 10,000 crashes? • Automation is needed fuzzing crash 1 crash 2 Good! Bad! GRAYHASH 40
  • 41. !exploitable • MS provides crash analyzer “!exploitable” • It says if a crash is exploitable or not • It assumes an attacker can control these 3 - destination address - move length - source address - like memcpy(dst, src, length) is under him GRAYHASH 41
  • 42. Be imaginative • No limit to fuzzing target • SYSCAL/SMS/Baseband/SCADA(PLC) • URL/VM-Communication/Filesystem • CPU instruction - recent instructions are complex GRAYHASH 42
  • 43. Even you know all those issues • You may think you’re very behind • Since 2008, SAGE has been running 24/7 on an average of 100-plus machines/ cores automatically fuzzing hundreds of applications in Microsoft security testing labs.This is more than 300 machine- years and the largest computational usage ever for any SMT (Satisfiability ModuloTheories) solver, with more than 1 billion constraints processed to date. • And there are definitely more groups who do advanced fuzzing 43
  • 45. Setting your basement • OS:Windows XP first! - Easy to debugging - Almost every RE tool works on XP - (I use linux for developing tools) • Find bugs and debug/exploit them upon XP • And port it for other versions of OS (win7/8) GRAYHASH 45
  • 46. Setting your basement • VMWARE (or otherVM) is mandatory • Use snapshots • Your OS will be messed up by your fuzzer • Rebooting doesn’t work time to time • The migration feature is very gold GRAYHASH 46
  • 47. Language • Don’t listen to others - how many friends of you have given you a tip for learning english? how many tips worked for you? • Just choose one whatever you like • But if you still need a recommendation, python is my answer • Many hack libraries are written in python • Ruby is getting popular GRAYHASH 47
  • 48. Language • If you use C for fuzzing because you just want to feel you’re l33t, you’re wrong • Realize what is your goal • (No offense, C is my favorite language and I know many good hackers doing fuzzing with C because they love C.) GRAYHASH 48
  • 49. RE tools around you • Do not invent wheels again • A bunch of tools out there which you can use for making a homebrew fuzzer • Example) radamsm + little python script = win GRAYHASH 49
  • 50. But do not believe tools too much • Unfortunately, some RE tools are naive • You may spend weeks to fix tools’ bugs • You may be end up with developing your own scripts / engines GRAYHASH 50
  • 51. Figure out what features you can add • Great tools out there • Pitch, Sully, and etc • But you never get satisfied with them • Find what you can make it better GRAYHASH 51
  • 52. Spend your time right • Imagine we have 2 problems • One thing very challenge but you may improve only 2% better performance • Other one very easy and you may improve 20% better performance • Also, I’d buy a new computer rather than making 2% better performance spending 50 hours GRAYHASH 52
  • 53. Hack like a champion • Your fuzzer might be very naive and silly • But not many people really do fuzzing • Feel confident! Hack like a champ! GRAYHASH 53
  • 54. Code coverage is most important • Try to find a way to do better coverage • Even you spend 10000 hour fuzzing, it doesn’t say you’re doing right • Always check if you’re doing right • For example: HWP takes compressed files in default which means you’re not fuzzing HWP format unless you decompress it GRAYHASH 54
  • 55. Understand the principles first! • You may get exceptions (crashes) but you’re doing wrong if you have no ideas about them • GO READ “The art of security software assessment” if you’ve not read! • Or you only look for strcpy() FOREVER GRAYHASH 55
  • 56. Mom, I hate quiz Figure out what is wrong with this code 56
  • 57. snprintf trick int num; char buf[256]; num = snprintf(buf, sizeof(buf), argv[1]); if(num >= sizeof(buf) - 2) { printf(“I hate youn”); exit(0); } #1 57
  • 58. snprintf trick int num; char buf[256]; num = snprintf(buf, sizeof(buf), argv[1]); if(num >= sizeof(buf) - 2) { printf(“I hate youn”); exit(0); } - OS dependency, works differently - Windows against Linux - Return value and null-termination #1 58
  • 59. GetFullPathName bad if(GetFullPathName(c_file, length, buf, &o) ==0) { printf(“badn”); exit(0); } #2 59
  • 60. GetFullPathName bad if(GetFullPathName(c_file, length, buf, &o) ==0) { printf(“badn”); exit(0); } - API understand (Return value) - if buf is not enough to contain, “RET” is the number required to do #2 60
  • 61. GetFullPathName bad If the lpBuffer buffer is too small to contain the path, the return value is the size, inTCHARs, of the buffer that is required to hold the path and the terminating null character. - And the API doesn’t touch the lpBuffer - Uninitialized is a very good friend *sometimes* [MSDN] #2 61
  • 62. wcsncpy madness wchar_t buf[256]; wcsncpy(buf, user_controlled_buf, sizeof(buf)); #3 62
  • 63. wcsncpy madness wchar_t buf[256]; wcsncpy(buf, user_controlled_buf, sizeof(buf)); - API understand (Arguments) - The 3rd argument is number in wide characters #3 63
  • 64. Mom, I told you I hate quiz!!!! 64
  • 65. Auditing code • Auditing code makes you a better fuzzing programmer • Find nice ideas while auditing code (or reversing the target) • And apply them to your fuzzer GRAYHASH 65
  • 66. Easy target first • GRETECH (Gomplayer) • ESTSOFT (Alzip,Alyac) • HANGUL HWP GRAYHASH 66
  • 67. Next level • FLASH • PDF • MS WORD GRAYHASH 67
  • 68. Next next level • Apache, PHP, IIS, SSH of course • And SMS, PIC, Baseband and etc • It’s not about fuzzing itself • How to set up your fuzzer on them? • Even how do you code upon the environments? GRAYHASH 68
  • 69. ETC • Fun is first, you don’t have to be a pro like Dr. Charlie Miller • Figure out values of your bugs • Your *easy* bug might be my *easy* bug 69
  • 70. Extra tips (Last word) • Have fun with hunting attack vectors • Go deep • Contact people who do actual research - co-work is fantastic GRAYHASH 70
  • 71. Q/A Thanks to codeengn and certlab Passket will buy beer at after party Drink free beer SECUINSIDE will be on 11th July GRAYHASH WWW.CODEENGN.COM CODEENGN REVERSEENGINEERING CONFERENCE 71