HACKING AT MACH SPEED! - Reverse Engineering Mac OS X

HACKING AT MACH SPEED! - Reverse Engineering Mac OS X HACKING AT MACH SPEED! - Reverse Engineering Mac OS X

reverse.put.as
from reverse.put.as More from this publisher
12.07.2015 Views

HACKING AT MACH SPEED!HOW I FOUND AN 0DAY AT 9PM THE NIGHT BEFORE SUMMERCONAND SPENT THE REST OF THE NIGHT MAKING SLIDESDINO A. DAI ZOVI@DINODAIZOVI / DDZ@THETA44.ORGHTTP://TRAILOFBITS.COM / HTTP://THETA44.ORG

<strong>HACKING</strong> <strong>AT</strong> <strong>MACH</strong> <strong>SPEED</strong>!HOW I FOUND AN 0DAY <strong>AT</strong> 9PM THE NIGHT BEFORE SUMMERCONAND SPENT THE REST OF THE NIGHT MAKING SLIDESDINO A. DAI ZOVI@DINODAIZOVI / DDZ@THETA44.ORGHTTP://TRAILOFBITS.COM / HTTP://THETA44.ORG


INTRODUCTION


THIS STORY STARTS WITH TWO GUYS NAMED ANDREW,


AND THE UNIVERSITY TH<strong>AT</strong> THEY FOUNDED.


CMU GRAD STUDENTS WROTE A MICROKERNEL FOR 4.2BSD/VAX


WHICH WAS USED IN NEXTSTEP


AND NEXTSTEP EVENTUALLY BECAME MAC <strong>OS</strong> X


THIS MICROKERNEL IS CALLED <strong>MACH</strong>


WH<strong>AT</strong> IS LOVE <strong>MACH</strong>?


WH<strong>AT</strong> IS IT?A MICROKERNEL BASED ON FOUR KEY ABSTRACTIONS:TASKS HOLD RESOURCES AND RUN THREADSA THREAD IS A CONTEXT OF EXECUTION ON A PROCESSORPORTS ARE UNIDIRECTIONAL QUEUES BETWEEN TASKSMESSAGES ARE STRUCTURED OBJECTS SENT TO PORTS


TASKSRESOURCE CONTAINERS TH<strong>AT</strong> HOLD:VIRTUAL MEMORY ADDRESS SPACEONE OR MORE THREADSPORT SEND AND RECEIVE RIGHTS


THREADSREPRESENT A CONTEXT OF EXECUTION ON A CPUVALUES STORED IN EACH CPU REGISTERCPU FLAGS AND OTHER ST<strong>AT</strong>EMAY BE SCHEDULED TO RUN ON ANY CPUMUST BELONG TO ONE AND ONLY ONE TASK


PORTSQUEUE OF STRUCTURED MESSAGESVERY UNLIKE UNIX FILE-BASED IPC ABSTRACTIONSTHE ONE TASK WITH THE EXCLUSIVE RECEIVE RIGHT OWNS ITZERO OR MORE TASKS MAY HOLD SEND RIGHTS TO A PORTRIGHTS MAY BE SENT TO OTHER TASKS IN MESSAGES


MESSAGESBASIC UNIT OF INTER-TASK COMMUNIC<strong>AT</strong>IONHEADER SPECIFIES SOURCE/DESTIN<strong>AT</strong>ION, ETC.BODY CONTAINS IN-LINE D<strong>AT</strong>AINTEGERS, STRINGS, FLO<strong>AT</strong>ING POINT NUMBERSMESSAGE MAY ALSO CONTAIN OUT-OF-LINE D<strong>AT</strong>APORT RIGHTSMEMORY PAGES


<strong>MACH</strong> RPC<strong>MACH</strong> RPC IS BUILT USING MESSAGES AND PORTSTHE <strong>MACH</strong> INTERFACE GENER<strong>AT</strong>OR (MIG)TAKES A USER-WRITTEN RPC INTERFACE FILE (FOO.DEFS)GENER<strong>AT</strong>ES USER AND/OR SERVER STUB ROUTINES TH<strong>AT</strong>ABSTRACT AWAY THE MARSHALING AND COMMUNIC<strong>AT</strong>IONRPC ROUTINE COMMUNIC<strong>AT</strong>ION IS ENCODED USING THESAME FORM<strong>AT</strong> AS MICR<strong>OS</strong>OFT RPC


SUP DAWG,WE HEARDYOU LIKEKERNELS, SOWE PUT AMICRO-KERNEL INYOURKERNEL (SOYOU CAN<strong>MACH</strong> WHILEYOU BSD)WHERE CAN I FIND IT?


THE KERNEL IS JUST A TASKM<strong>OS</strong>T LOW-LEVEL FUNCTIONS ARE RPC CALLS TO KERNELTASK, THREAD, MEMORY, SEMAPHORES, ETCTHE KERNEL IS A TASK, JUST LIKE OTHER PROCESSES ARECAN READ/WRITE KERNEL MEMORYCRE<strong>AT</strong>E, SUSPEND, AND TERMIN<strong>AT</strong>E KERNEL THREADSCALL OTHER RPC SERVERS IN THE KERNEL


AUDITING <strong>MACH</strong> RPC


BOOTSTRAP SERVERHOW CLIENTS FIND SERVERSEVERY TASK IS GIVEN SENDRIGHTS TO BOOTSTRAPSERVER’S RPC SERVICEPORTTHE BOOTSTRAP SERVERLIVES INSIDE LAUNCHDLAUNCH SERVERS ONDEMANDWILL ALSOAUTOM<strong>AT</strong>ICALLYRELAUNCH CRASHED ONES


WHERE THE SERVERS <strong>AT</strong>?BOOTSTRAP SERVERS ARE CONFIGURED IN:{/SYSTEM,/,~}/LIBRARY/LAUNCHAGENTS{/SYSTEM,/,~}/LIBRARY/LAUNCHDAEMONS/ETC/<strong>MACH</strong>_INIT.D/ETC/<strong>MACH</strong>_INIT_PER_USER.D/ETC/<strong>MACH</strong>_INIT_PER_LOGIN_SESSION.DDYNAMICALLY USING CALLS TO BOOTSTRAP_REGISTER()


UPD<strong>AT</strong>E_SHARING.DEFSprajna% ls /System/Library/LaunchAgents/com.apple.A<strong>OS</strong>Notification<strong>OS</strong>X.plistcom.apple.AddressBook.abd.plistcom.apple.AirPortBaseStationAgent.plistcom.apple.AppleGraphicsWarning.plistcom.apple.BezelUI.plistcom.apple.CoreLocationAgent.plistcom.apple.DictionaryPanelHelper.plistcom.apple.Dock.plistcom.apple.FileSyncAgent.plistcom.apple.Finder.plistcom.apple.FontRegistryUIAgent.plistcom.apple.FontValidator.plistcom.apple.FontValidatorConduit.plistcom.apple.FontWorker.plistcom.apple.Kerberos.renew.plistcom.apple.KerberosHelper.LKDCHelper.plistcom.apple.NetworkDiagnostics.plistcom.apple.PCIESlotCheck.plist[ ... ]


BOOTSTRAP_INFOprajna% ./bootstrap_inforu (Apple)_OpenStep ([0x0-0x27027].com.apple.AppleSpell) = ACTIVEcom.apple.finder.ServiceProvider (com.apple.Finder) = ACTIVEcom.apple.FontRegistry.FontRegistryUIAgent (com.apple.FontRegistryUIAgent) =ON_DEMANDcom.apple.FontObjectsServer (com.apple.fontd) = ACTIVEWaveMessagePort.314.23499425 (0x100403990.anonymous.wineloader) = ACTIVEcom.apple.rcd (0x100400510.mach_init.rcd) = ON_DEMANDcom.apple.netauth.useragent (com.apple.netauth.useragent) = ON_DEMANDcom.apple.datadetectors.compiler (com.apple.datadetectors.compiler) =ON_DEMANDcom.apple.autologinPWHandler (0x100400000.anonymous.loginwindow) = ACTIVEcom.apple.FontWorker (com.apple.FontWorker) = ON_DEMANDcom.apple.Preview.ServiceProvider ([0x0-0x4b04b].com.apple.Preview) = ACTIVEcom.apple.ReportCrash (com.apple.ReportCrash) = ON_DEMANDcom.apple.coreservices.quarantine-resolver (com.apple.coreservices.uiagent) =ON_DEMANDcom.apple.DictionaryPanelHelper (com.apple.DictionaryPanelHelper) = ON_DEMAND[ ... ]


LET’S GO A BUG-HUNTING


REDACTED


PWN2OWN PRIZES FOR 2012OR, REPORT YOUR BUGS TO THE VENDORS FOR FREE


VULNERABILITY HANDLINGWE NEED TO DEB<strong>AT</strong>E “VULNERABILITY HANDLING” NOT“RESPONSIBLE DISCL<strong>OS</strong>URE”“RESPONSIBLE DISCL<strong>OS</strong>URE” PRESUPP<strong>OS</strong>ES MANYDECISIONS, JUDGEMENTS, AND INTERESTSWAS CRE<strong>AT</strong>ED FOR 2002’S INTERNET, BUT NOW IT’S 2010MANY OF ZDI’S “UPCOMING ADVISORIES” COULD ENABLE AN“AURORA”-STYLE <strong>AT</strong>TACK IF EXPLOITED


ARE WE CHASING OUR TAIL?IS THE VULNERABILITY DISCL<strong>OS</strong>URE ST<strong>AT</strong>US QUO:AWESOME?SUFFICIENT?IRRELEVANT?A DISTRACTION <strong>AT</strong> BEST?ENABLING AN ADDICT?


VULNERABILITIES VS.EXPLOITSA VULNERABILITY NEVER 0WNED ANYONE, AN EXPLOIT DIDTHERE ARE MORE PEOPLE TH<strong>AT</strong> CAN FIND VULNERABILITIESTHAN CAN WRITE RELIABLE EXPLOITSCOUNT NUMBER OF ZDI VULNERABILITY CONTRIBUTORS VS.PWN2OWN CONTESTANTS PAST AND PRESENTA MINORITY OF VULNERABILITIES HAVE THE POTENTIAL TOBE TURNED INTO A DANGEROUS EXPLOIT


EXPLOITS M<strong>AT</strong>TER<strong>OS</strong>VDB QUERY FOR REMOTE VULNERABILITIES IN 2009~1000 POTENTIAL CODE/COMMAND EXECUTIONMANUAL ANALYSIS OF EXPLOIT KITS, INCIDENTS, ETC.40 EXPLOITS OBSERVED BEING USED IN THE WILDM<strong>OS</strong>T COPIED FROM MILWORM WITH FEW CHANGESCOMMENT OUT SKAPE/SKYWING DEP BYPASS


BUGS FOR B<strong>OS</strong>CH“GOOGLE <strong>AT</strong>TACK HIGHLIGHTS 'ZERO-DAY' BLACKMARKET” (AP, 1/29/2010)"I BASICALLY HAD TO MAKE A CHOICE BETWEEN DOINGSOMETHING TH<strong>AT</strong> WOULD PROTECT EVERYBODY ANDREMODELING MY KITCHEN — AS TERRIBLE AS TH<strong>AT</strong> IS, IMADE TH<strong>AT</strong> CHOICE, AND IT'S HARD," MILLER SAID. "IT'S ALOT OF MONEY FOR SOMEONE TO TURN DOWN."ADOBE JBIG2 EXPLOIT WAS SOLD FOR $75K (TWITTER, I THINK)REPORTING BUG RESPONSIBLY FEELS LIKE A MILLIONBUCKS!


$75K IS A LOT OF FOOD$75K = ~ $512K CNYAVERAGE YEARLY SALARY FOR A SOFTWARE ENGINEER INCHINA IS $90K CNYHTTP://WWW.PAYSCALE.COM/RESEARCH/CN/COUNTRY=CHINA/SALARYWOULD YOU “DO THE RIGHT THING” FOR FREE WHEN YOUCOULD “DO THE WRONG THING” FOR 5-6 YEARS SALARY?


FIGHTING 0DAY EXPLOITSMAKE THEM ILLEGAL!RIGHT... BEST OF LUCK WITH TH<strong>AT</strong> (WTO SANCTIONS?)MAKE A TRANSPARENT, OPEN, LEGITIM<strong>AT</strong>E MARKET!VENDORS WILL NEVER PAY OR PLAY ALONGMAKE THEM INEFFECTIVE!NOW YOU’RE ONTO SOMETHING...


ONE 0DAY RUINS YOUR DAYONE 0DAY BROWSER OR DOCUMENT READER EXPLOIT IS ASKELETON KEY FOR EVERYONE’S SIDE DOORSTHE FRONT DOOR HAS LAYERED FIREWALLS, DMZS,HARDENED SERVERS, INGRESS/EGRESS FILTERINGCLIENT DESKTOPS ARE A WILDERNESS OF UNMANAGEDOR BARELY MANAGED SYSTEMS WITH SOFTWAREHANDLING UNTRUSTED D<strong>AT</strong>A AS ADMINISTR<strong>AT</strong>ORCLIENT DESKTOPS HAVE UNLIMITED INTERNAL ACCESS


LET’S TALK ABOUT TAVIS


IS THIS THE ADVANCED PERSISTENT THRE<strong>AT</strong>?OR, “HOW MANY CHINESE HACKERS DOES IT TAKE TOCOMPROMISE YOUR NETWORK?”


CYBERWARRIORS ORCYBERPUNKS?STOP FL<strong>AT</strong>TERING YOURSELF, YOUR NETWORK ISTRIVIAL TO 0WNYOUR EMPLOYEES AND THEIR E-MAIL ADDRESSES AREENUMERABLE ON SOCIAL NETWORKING SITES?YOUR EMPLOYEES ANSWER EXTERNAL E-MAIL ANDACCESS INTERNET WEB SITES ON THE SAME <strong>MACH</strong>INETH<strong>AT</strong> THEY CRE<strong>AT</strong>E OR HANDLE PROPRIETARY IP?ARE THEIR E-MAIL ADDRESSESFIRSTNAME.LASTNAME@COMPANY.COM?


0DAY <strong>AT</strong>TACKS != H1N1STOP TRE<strong>AT</strong>ING 0DAY <strong>AT</strong>TACKS LIKE H1N1PEOPLE ARE GETTING SICK WITH AN UNKNOWN VIRUS,WE MUST RESPOND TO THIS INCIDENTTAKE ANTI-VIRAL MEDIC<strong>AT</strong>ION TO TRE<strong>AT</strong> INFECTIONSWE HAVE DEVELOPED AN IMMUNIZ<strong>AT</strong>ION SHOT FOR H1N1,EVERYONE PLEASE GO APPLY IT TO YOURSELVESANY HAND-WRITTEN MALWARE WILL EVADE ANTI-VIRUSWE DON’T HAVE A CYBER IMMUNE SYSTEM YET


PUBLIC HEALTH VS. CRIMEMASS MALWARE AND BOTNETS ARE AN INTERNET PUBLICHEALTH PROBLEM (CYBERHEALTH?)OPPORTUNISTIC, LOW-SKILL AND <strong>AT</strong>TENTIONTARGETED <strong>AT</strong>TACKS ARE A CYBERCRIME PROBLEMDETERRENCE REQUIRES ENFORCEMENT AND PR<strong>OS</strong>ECUTION(GOOD LUCK ON TH<strong>AT</strong>!)IN ABSENCE OF TH<strong>OS</strong>E, PREVENTION IS BEST RECOURSE


PREVENTION IS HARDBECAUSE THE SECURITY INDUSTRY ISN’T MAKING THE RIGHTPRODUCTS OR TOOLSNO ONE BOUGHT THE EFFECTIVE ONES BECAUSE THEYDIDN’T UNDERSTAND THEM OR COULDN’T JUSTIFY THEMVULNERABILITY AND EXPLOITABILITY ANALYSIS ISCONFUSINGWH<strong>AT</strong> MITIG<strong>AT</strong>IONS ARE ENABLED IN THIS APPLIC<strong>AT</strong>ION?ARE THEY EFFECTIVE? HAVE THEY BEEN DISABLED?


EXPLOITS SHOULD BE HARDAND THEY ARE GETTING HARDER, BUT NOT HARD ENOUGHMASS MALWARE INCREASINGLY TURNING TO SOCIALENGINEERING TACTICS INSTEAD (I.E. ROGUE AV)MISANTHROPINGLY EFFECTIVEREAL ANTI-VIRUS CAN HANDLE THIS PROBLEMDEFENDING AGAINST ADVANCED <strong>AT</strong>TACKERS REQUIRESADVANCED DEFENSE SYSTEMS


E<strong>AT</strong> THE RICH AV VENDORSOVERHEARD OUTSIDE RSA EXHIBITION HALL:“VENDOR SPENT $500K ON THEIR BOOTH EXHIBIT AND ITC<strong>OS</strong>TS THEM $90K TO TRANSPORT AND SET IT UPANYWHERE”THEY HAVE TOO MUCH MONEY FOR NOT SOLVING TODAY’SREAL-WORLD PROBLEMSWHY PAY PROTECTION MONEY TO THE MAFIA WHEN YOU ARESTILL GETTING ROBBED EVERY DAY?


STOP CALLING THEM BUFFER OVERFLOWS!UNLESS A BUFFER IS ACTUALLY BEING OVERFLOWN(INCREASINGLY RARE)


VULNERABILITY TERMINOLOGYBUFFER OVERFLOWWH<strong>AT</strong> ABOUT OUT-OF-BOUNDS ARRAY INDEXES?ARBITRARY CODE EXECUTIONWH<strong>AT</strong> ABOUT SOLARIS TELNETD BUG => AUTH BYPASSMEMORY CORRUPTIONWH<strong>AT</strong> ABOUT USE-AFTER-FREE?WH<strong>AT</strong> ABOUT MEMORY DISCL<strong>OS</strong>URE VULNERABILITIES?


TYPE SAFETYALL OF THESE VULNERABILITIES ARE FAILURES OF TYPESAFETYC/C++ ARE NOT MEMORY-SAFE OR TYPE-SAFETYPE-SAFE LANGUAGES ONLY HAVE THESE PROBLEMS WHENTHEIR IMPLEMENT<strong>AT</strong>IONS, WRITTEN IN UNSAFE LANGUAGES,HAVE THESE VULNERABILITIESOR PROGRAMS USE “UNSAFE” EXTENSIONSWH<strong>AT</strong> SHOULD WE CALL THESE ISSUES?


“MEMORY TRESPASS”“MEMORY TRESPASS VULNERABILITIES ARE SOFTWAREWEAKNESSES TH<strong>AT</strong> ALLOW MEMORY ACCESSES OUTSIDE OFTHE SEMANTICS OF THE PROGRAMMING LANGUAGE IN WHICHTHE SOFTWARE WAS WRITTEN.”DAI ZOVI, “SECURITY APPLIC<strong>AT</strong>IONS OF DYNAMIC BINARYTRANSL<strong>AT</strong>ION”, UNIVERSITY OF NEW MEXICO TECH REPORTTR-CS-2002-38YES, I AM QUOTING MYSELF. DEAL WITH IT.CODE INJECTION AND EXECUTION IS ONLY ONE WAY TO EXPLOITA FEW SPECIFIC CLASSES OF MEMORY TRESPASSVULNERABILITIES


OR...TYPE VIOL<strong>AT</strong>IONTYPE SAFETY BYPASSMEMORY SAFETY BYPASSJUST DON’T SAY “BUFFER OVERFLOW” WHEN IT ISN’TDON’T GET ME STARTED ON THE WORD “SHELLCODE"


BUT, BUT, ASLR, DEP!ASLR AND DEP DO A GRE<strong>AT</strong> JOB OF MAKING EXPLOIT<strong>AT</strong>ION OFSERVER-SIDE VULNERABILITIES IMP<strong>OS</strong>SIBLE IN THE VASTMAJORITY OF CASESLOW-INTEGRITY PREVENTS WRITING, BUT NOT READING YOURSENSITIVE DOCS AND INFORM<strong>AT</strong>IONSCRIPTABLE CLIENT APPLIC<strong>AT</strong>IONS OFFER A MUCH LARGERELEMENT OF <strong>AT</strong>TACKER CONTROLYIELDS MORE P<strong>OS</strong>SIBILITIES FOR EVADING ASLRCODE-REUSE EXPLOIT TECHNIQUES CAN BE USED TO BYPASSDEP


CODE-REUSE EXPLOITSRETURN-TO-LIBC (SOLAR DESIGNER, 1997)RETURN INTO FUNCTIONS IN LIBCBORROWED CODE CHUNKS (KRAHMER, 2005)LINK RETURNS TO SINGLE-INSTRUCTIONSRETURN-ORIENTED PROGRAMMING (SHACHAM, 2007)TURING COMPLETE W/ COMPILER FOR C-LIKE LANGUAGE


TACTICS VS. STR<strong>AT</strong>EGYMALICIOUS INJECTED CODE IS NOT THE TRUE PROBLEMIT IS ONLY THE M<strong>OS</strong>T COMMON EXPLOIT<strong>AT</strong>ION TACTICCODE-REUSE EXPLOIT<strong>AT</strong>ION TECHNIQUES DON’T NEED TOINJECT ANY CODE, WILL REUSE WH<strong>AT</strong> IS THERETHE STR<strong>AT</strong>EGY IS TO MAKE THE TARGET APPLIC<strong>AT</strong>ION DOUNEXPECTED THINGS IN A WAY USEFUL TO THE <strong>AT</strong>TACKERUNEXPECTED/UNDESIRABLE BEHAVIOR IS PROBLEM


MY SANDBOX SOAPBOXWHY DOES MY BROWSER NEED TO BE ABLE TO WRITE TOANYWHERE EXCEPT FOR ~/DOWNLOADS?WHY DO DOC READERS, IM CLIENTS, NEED TO WRITE FILES <strong>AT</strong> ALL?MULTI-USER DAC SECURITY MODEL IS ILL-SUITED TO THEDESKTOPWE NEED A NEW MULTI-APPLIC<strong>AT</strong>ION DESKTOP SECURITY MODELPHONES (IPHONE AND ANDROID) ALREADY HAVE THISIPHONE PREVENTS INJECTED CODE AND APP MISBEHAVIOR


QUESTIONS?@DINODAIZOVI / DDZ@THETA44.ORG

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!