Table Of ContentHacking the Abacus: An Undergraduate
Guide to Programming Weird Machines
by
MichaelE.LocastoandSergeyBratus
version1.0
(cid:13)c2008-2014
MichaelE.LocastoandSergeyBratus
Allrightsreserved.
i
WHENIHEARDTHELEARN’DASTRONOMER;
WHENTHEPROOFS,THEFIGURES,WERERANGEDINCOLUMNSBEFOREME;
WHENIWASSHOWNTHECHARTSANDTHEDIAGRAMS,TOADD,DIVIDE,ANDMEASURETHEM;
WHENI,SITTING, HEARDTHEASTRONOMER, WHEREHELECTUREDWITHMUCHAPPLAUSEINTHE
LECTURE–ROOM,
HOWSOON,UNACCOUNTABLE,IBECAMETIREDANDSICK;
TILLRISINGANDGLIDINGOUT,IWANDER’DOFFBYMYSELF,
INTHEMYSTICALMOISTNIGHT–AIR,ANDFROMTIMETOTIME,
LOOK’DUPINPERFECTSILENCEATTHESTARS.
WhenIheardtheLearn’dAstronomer,
from“LeavesofGrass”,
byWaltWhitman.
ii
Contents
I Overview 1
1 Introduction 5
1.1 TargetAudience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 The“HackerCurriculum”. . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 ADefinitionof“Hacking” . . . . . . . . . . . . . . . . . . . 6
1.2.2 Trust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 StructureoftheBook . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 ChapterOrganization . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 StuffYouShouldKnow . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5.1 GeneralMotivationAboutSISMAT . . . . . . . . . . . . . . 8
1.5.2 SecurityMindset . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.3 DrivingaCommandLine . . . . . . . . . . . . . . . . . . . 10
II Exercises 11
2 Ethics 13
2.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.1 Capt. Oates . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 MoralPhilosophies . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4 EthicalScenariosforDiscussion . . . . . . . . . . . . . . . . . . . . 15
2.5 Lab1: Warmup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5.1 DownloadingMusic . . . . . . . . . . . . . . . . . . . . . . 16
2.5.2 Shoulder-surfing . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5.3 NotObeyingEULAProvisions . . . . . . . . . . . . . . . . 16
2.6 Lab2: Discomfort. . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.6.1 GuessingEmailPasswords . . . . . . . . . . . . . . . . . . . 18
2.6.2 ListeningtoNetworkTraffic . . . . . . . . . . . . . . . . . . 18
2.6.3 Diagnosingnetworkconnectivityproblems . . . . . . . . . . 18
2.7 Lab3: HotSauce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7.1 DoxingandTargetingPeople. . . . . . . . . . . . . . . . . . 19
2.7.2 CyberstalkingandSwatting . . . . . . . . . . . . . . . . . . 19
2.7.3 VulnerabilityDisclosure . . . . . . . . . . . . . . . . . . . . 19
iii
2.8 Lab4: ReligionandPolitics . . . . . . . . . . . . . . . . . . . . . . 21
2.8.1 DownloadingAcademicArticles . . . . . . . . . . . . . . . . 21
2.8.2 ShouldYouBeanArmsDealer? . . . . . . . . . . . . . . . . 21
2.9 “OnHackers” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9.1 HackingIsOKandAttackPapersAreGood . . . . . . . . . 21
2.9.2 ShouldKnowledgeBeLockedAway? . . . . . . . . . . . . . 22
2.9.3 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9.4 IsHackingEasy? . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9.5 OPSEC:HowShouldaHackerAct? . . . . . . . . . . . . . . 23
2.9.6 TeachingHackers . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10 ClosingThoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 HostSecurity 25
3.1 BeatUpYourOperatingSystem . . . . . . . . . . . . . . . . . . . . 27
3.1.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 29
3.2 ChainingTogetherArbitrarySequencesofSystemCalls . . . . . . . 30
3.2.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 31
3.3 Interlude: Tools: ADisassemblerScript . . . . . . . . . . . . . . . . 32
3.4 SpeakingMachineLanguage . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 39
3.5 SpeakingtotheMachine:
TheSystemCallInterface . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 45
3.6 Interlude: ProgramBehavior: SystemCallSequences . . . . . . . . . 47
3.6.1 Thestracetool. . . . . . . . . . . . . . . . . . . . . . . . 47
3.6.2 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.7 Shellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.7.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.7.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 49
3.7.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
iv
3.7.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.7.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 51
3.8 ManipulatingtheELF . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.8.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.8.2 LearningObjectives . . . . . . . . . . . . . . . . . . . . . . 52
3.8.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.8.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.8.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 56
3.9 RollYourOwnVulnerability . . . . . . . . . . . . . . . . . . . . . . 57
3.9.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.9.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 57
3.9.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.9.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.9.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 58
3.10 CaseStudy: ASimpleStack-basedBufferOverflow . . . . . . . . . . 59
3.10.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.10.2 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.10.3 LearningObjectives . . . . . . . . . . . . . . . . . . . . . . 59
3.10.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.10.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 61
3.11 Open-endedActivity: AnalyzingAnotherVuln . . . . . . . . . . . . 62
3.11.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.11.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 62
3.11.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.11.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.11.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 62
3.12 MapYourHeap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.12.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.12.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 63
3.12.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.12.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.12.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 64
3.13 ObservingASLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.13.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.13.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 66
3.13.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.13.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.13.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 67
3.14 Capstone: ROPSearch . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.14.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.14.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 68
3.14.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.14.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.14.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 69
3.14.6 RelatedWork . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.15 Capstone: BugHunting . . . . . . . . . . . . . . . . . . . . . . . . . 71
v
3.15.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.15.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 71
3.15.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.15.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.15.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 73
3.16 Capstone: WriteYourOwnDebugger . . . . . . . . . . . . . . . . . 75
3.16.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.16.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 76
3.16.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.16.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.16.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 78
3.17 TakehomeMessage . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.18 FurtherReading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.18.1 MaliciousComputation: ReturntoLibrary . . . . . . . . . . 79
3.18.2 ProgrammingtheProcessAddressSpace . . . . . . . . . . . 79
3.18.3 HeapInjectionandHeapSpraying . . . . . . . . . . . . . . . 79
3.18.4 SpeakinginTounges: DWARFisbytecode . . . . . . . . . . 79
4 NetworkSecurity 81
4.1 NetworkingIntroduction . . . . . . . . . . . . . . . . . . . . . . . . 81
4.1.1 TeachingOSFrom(Almost)OneSubsystem . . . . . . . . . 82
4.1.2 TheUserLevel: NetworkInterfaces . . . . . . . . . . . . . . 82
4.1.3 TheUserLevel: BoundNetworkPortsandNetworkState . . 83
4.1.4 TheSystemCallAPI . . . . . . . . . . . . . . . . . . . . . . 83
4.1.5 KernelNetworkStateConfiguration: sysctl . . . . . . . . . . 83
4.1.6 KernelCode . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.1.7 Netfilter: TheLinuxNetworkingArchitecture . . . . . . . . . 84
4.1.8 ReadingfromtheNetwork: PacketCapture . . . . . . . . . . 84
4.1.9 ReadingfromtheNetwork: PacketCrafting . . . . . . . . . . 84
4.1.10 VirtualizingtheNetwork: Tunneling . . . . . . . . . . . . . . 84
4.2 Warmup: HuntaRougue802.11AccessPoint . . . . . . . . . . . . . 85
4.2.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.2.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 85
4.3 NetworkAccessControlLists . . . . . . . . . . . . . . . . . . . . . 86
4.3.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.3.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 86
4.3.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.3.4 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.3.5 Notes,Hints,andRecommendations . . . . . . . . . . . . . . 87
4.4 NetworkRecon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.4.1 Synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.4.2 LearningOutcomes . . . . . . . . . . . . . . . . . . . . . . . 88
4.4.3 Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
vi
Description:Hacking the Abacus: An Undergraduate. Guide to Programming Weird Machines
by. Michael E. Locasto and Sergey Bratus version 1.0