THIS IS HISTORY! Check fabien.benetou.fr for news.
Seedea, scalable creativity
Xye, consultancy for serious creators
Information
(Updates)
back to the article index Page feed
back to the botnets article
(:pmgraphviz -- digraph { "drive" -> "writing"; "drive" -> "injection" [label="use of existing code"]; "writing" -> "injection"; "injection" -> "propagation"; "propagation" -> "propagation" [label=" +=1 machine"]; "propagation" -> "stagnation"; "stagnation" -> "stagnation" [label=" stealth wait for request"]; "stagnation" -> "propagation"; "stagnation" -> "synchronization" [style=dashed]; "stagnation" -> "action"; "synchronization" -> "action" [style=dashed]; "stagnation" -> "upgrade" [style=dashed]; "writing" -> "upgrade" [style=dashed]; "upgrade" -> "stagnation" [style=dashed]; "synchronization" -> "stagnation" [style=dashed]; "action" -> "stagnation"; } :)
Drive | Writing | Injection | Propagation | Stagnation | Synchronization | Action | Upgrade |
what motivates one to use a botnet | how can one build one, based on existing code or delegating it | how does one initiate it (bootstrap phase, injection in the network) | how does the botnet agents propagate from machine to machine to gather more agents | how each agent stay stealth while waiting for more commands | how all the agents synchronize themselves when organization are required (for example DDoS) which is mainly communication | finally doing one the possible action (the real payload) | being able to upgrade itself in order to do more action, stay more stealth, ...) |
(:pmgraphviz -- digraph { "infected node" -> "infected node" [label="0 - scans network"]; "infected node" -> "vulnerable targeted node" [label="1 - scan for exploit"]; "vulnerable targeted node" -> "infected node" [label="2 - unknowingly request payload"]; "vulnerable targeted node" -> "vulnerable targeted node" [label="3 - execute payload and becomes another infected node"]; } :)
(:pmgraphviz -- digraph { "infected node" -> "infected node" [label="0 - scans external devices"]; "infected node" -> "external device" [label="1 - infect device\n(if possible autoruns)"]; "vulnerable targeted node" -> "external device" [label="2 - unknowingly request payload"]; "vulnerable targeted node" -> "vulnerable targeted node" [label="3 - execute payload and becomes another infected node"]; } :)
(:pmgraphviz -- digraph { "infected node" -> "infected node" [label="0 - mines contacts"]; "infected node" -> "targeted node" [label="1 - social engineering\nfor drive-by download"]; "targeted node" -> "relay server" [label="2 - knowingly click on link"]; "targeted node" -> "targeted node" [label="3 - execute payload and becomes another infected node"]; } :)
(:pmgraphviz -- digraph { "herder" -> "C&C" [label="request action"]; "C&C" -> "node A"; "C&C" -> "node B"; "C&C" -> "node C"; "node A" -> "target"; "node B" -> "target"; "node C" -> "target"; } :)
(:pmgraphviz -- digraph { "herder" -> "node A" [label="request action"]; "node A" -> "node B"; "node A" -> "node C"; "node B" -> "node C"; "node B" -> "node D"; "node A" -> "target"; "node B" -> "target"; "node C" -> "target"; "node D" -> "target"; } :)
... right, later on.
(:pmgraphviz -- digraph { cleannode [shape=record,label="uncontrolled node"]; target [shape=record,label="target"]; herder [shape=record,label="{herder control|{<r1>request action|request upgrade}}"]; subgraph clusterbotnet { label="Botnet"; style=filled; fillcolor=grey; nodeA [shape=record,style=filled,fillcolor=lightgrey,label="controlled node"]; nodeB [shape=record,style=filled,fillcolor=lightgrey,label="stealth mechanism\nunpacking\nxoring\nrewriting (polymorphism/metamorphism) |{ actual payload|{<a1>action1|action2|action3}| upgrade}| <com>communication | <pv>propagation vectors\nemail\ndrive-by download\nexploit"]; nodeA -> nodeB:com [label="transmit request"]; } herder:r1 -> nodeA [label="request action1 on target"]; nodeB:a1 -> target; nodeB:pv -> cleannode [label="propagation"]; cleannode -> clusterbotnet [label="join if succeed"]; } :)
(simplified version) (:pmgraphviz -- digraph G { subgraph cluster_bh { style=filled; color=lightgrey; node [style=filled,color=white]; label = "black hat\n(accumulated knwoledge,\nhighly secretive and competitive culture of the community)"; improving_malware; new_protection_threat_detected; new_protection_threat_detected -> improving_malware; improving_malware -> improving_malware [label="anticipating_protection_threat"]; } subgraph cluster_wh { node [style=filled]; label = "white hat\n(accumulated knowledge, culture of the community)"; color=blue; improving_protection; new_malware_threat_detected; new_malware_threat_detected -> improving_protection; improving_protection -> improving_protection [label="anticipating_malware_threat"]; } //[label="anticipation"] //[label="response"] drive [shape=Mdiamond,label="need to bypass\nlocal legislation"]; drive -> improving_malware; improving_protection -> new_protection_threat_detected; improving_malware -> new_malware_threat_detected; } } :)
(to move to research)
increasing amount of parameters taken into account over time
decreasing amount of imprecision of the model over time
PS : the term "loop" is probably too blurry, it should be replace by epistemic improvement, acquisition of knowledge, ...