Changes between Version 10 and Version 11 of CachePoisonExample
- Timestamp:
- Nov 5, 2010 3:28:24 PM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CachePoisonExample
v10 v11 9 9 === Cache poisoning metadescription === 10 10 11 11 define CachePoisoning: 12 12 * '''Logical topology:''' 13 13 … … 57 57 This is a special case of cache poisoning where the target is DNS cache. 58 58 59 define DNSCachePoisoning: import CachePoisoning cp 59 60 * '''Logical topology:''' 60 61 61 62 '''Objects:''' 62 63 63 Attacker extends Node64 65 64 Auth extends Node 66 65 67 Name extends DNSName 66 (Name extends DNSName, Name := cp.Name, fakeIP extends IPAddress, FakeIP := cp.fakeResource) xor 67 68 (Name extends DNSName, domain(Name) := cp.Name, fakeAuth extends DNSName, fakeAuth := cp.fakeResource) 68 69 69 70 RealIP extends IPAddress 70 71 71 FakeIP extends IPAddress or fakeAuth extends DNSName 72 73 victimCache extends Object 72 victimCache extends Object, victimCache := cp.Cache 74 73 75 74 victimCache := {DNSRecord[] records} … … 81 80 '''Cardinality:''' 82 81 83 |Attacker|,,1,,84 82 85 83 |Auth|,,1,, 86 84 87 |Name|,,1,,88 89 |FakeIP|,,1,,90 91 |fakeAuth|,,1,,92 93 85 |RealIP|,,1,, 94 86 95 |victimCache|,,1,,96 97 87 |authCache|,,1,, 98 88 99 89 '''Relationships:''' 100 90 101 not collocated(victimCache, Attacker)102 103 91 not collocated(victimCache, Auth) 104 92 … … 110 98 '''Definitions:''' 111 99 100 DNSREQUEST extends REQUEST 101 102 DNSREPLY extends REPLY 103 112 104 Attacker att, Auth auth, Name n, FakeIP fIP, fakeAuth fauth, RealIP rIP, victimCache vc, authCache ac 113 105 … … 120 112 e4 := {type = DNSREPLY, origin = auth, destination = vc, content = {n=unknown}} 121 113 122 e5 := {type = DNSREPLY, origin = att, destination = vc, content = {auth(domain(n)) = dnsname(fakeAuth)}}114 e5 := {type = DNSREPLY, origin = att, destination = vc, content = {auth(domain(n)) = fakeAuth}} 123 115 124 116 s1 := {vc.records += (auth(domain(n)) = fakeAuth)} … … 130 122 '''Timeline:''' 131 123 132 e1 -> e2 -> (e5 -> s1 -> e4 xor e6-> s2 -> e3)124 e1 -> e2 -> (e5 | matches(e5,e2) -> s1 -> e4 xor e6 | matches(e6, e2) -> s2 -> e3) 133 125 134 126 … … 139 131 The phishing attempt is essentially same as presenting a valid page to the user that asks for confidential info - it's just that the location of that page is not as user expected. 140 132 133 define ConfidentialAccess: 141 134 142 135 * '''Logical topology:''' … … 192 185 193 186 Now I'm a user who wants to design an experiment. I need to combine two metadescriptions (DNS cache poisoning and phishing) and somehow tie them down to generator choices. To combine I'll do something like this: 187 188 define Phishing: import DNSCachePoisoning dcp, ConfidentialAccess ca 194 189 195 DNSCachePoisoning dcp, confidentialAccess ca 190 * '''Logical topology:''' 191 192 '''Objects:''' 193 dcp.FakeIP := ip(ca.Server) 194 195 '''Cardinality:''' 196 197 '''Relationships:''' 198 199 * '''Timeline of events: ''' 200 201 '''Definitions:''' 202 203 '''Timeline:''' 204 205 timeline(dcp) -> timeline(ca) 206 207 208 * '''Invariants:''' Nothing in addition to the topology and timeline above. 209 196 210 197 dcp.FakeIP := ip(ca.Server) 198 199 dcp -> ca 200 211