ebook img

Hacking the Abacus: An Undergraduate Guide to Programming PDF

141 Pages·2014·1.55 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Hacking the Abacus: An Undergraduate Guide to Programming

Hacking 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
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.