<div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">I think commodity malware have come much further than legitimate tools in some regards, and are much further behind in others.</div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">Notably, almost all commodity criminal implants have an specificity of mission not commonly found in the group of attack frameworks you highlight.</div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">The typical level of specificity is "I want to make money off this implant" and one typical outcome of this ambiguity is having N ways to make money: through credential theft, CC scraping, clickfraud, participation in DDoS, etc.  </div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">Very rarely will these objectives require the implant to make decisions about how to attempt to accomplish the objective, and almost never any sort of "privileged" peer interaction.</div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">Some focus has been given to improving the robustness and survivability of the infrastructure and control channel, mostly in distribution of command/config, and shipping "home" the money-making data. </div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">Notably, these are areas where attack frameworks like those you listed have made some progress. Not as much progress as some malware out there, perhaps, but still progress; every category has stand-outs.</div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">I think that one reason so much focus is given to the "lesser" algorithms in designing capabilities and control protocols for remote agents is ambiguity and flexibility of application. Ambiguity and flexibility of application cause some people to think about simplifications to interactivity; the first intuitive  solution appears to be building a tool that provides some abstractions for local resources and runs whatever code the control channel pushes it, and the easier you can make it to deliver instructions to interact with or loot resources of the implanted hosts, the better. </div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">And so, most implants are designed with two control flows: a preconceived/scripted mission, and a capability to loop, wait for interactivity with a control channel, and process updates or extensions to that mission or script. The notion of peering is just beginning to take shape as distributed implant puppeteering improves, and having many co-operating implants is becoming more commonplace.</div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">But I think most of our tools are still pretty bad at describing different kinds of mission in a decomposable way, where individual nodes can understand their role in the mission and interact directly with peers to execute complex missions.</div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">We're getting better, certainly. Tools like Bloodhound that leverage frameworks like Empire are a good example of encoding and communicating and executing a mission... still very wheel-and-spoke, though. They could use more hive-mind. </div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">I'm not sure we have yet developed the semantics to have Siri help us here.  "hey siri, tell implants at the target to work amongst themselves to exfil the Crown Jewels that customer has requested" for arbitrary Crown Jewels. </div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">It sounds quite challenging to encode.</div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">The difficulty of sufficiently describing said jewels, writing code to enumerate all possible paths to them, the resource complexity of reaching them in execution... each seems very significant. </div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">Doing it quietly, so that defenders never notice seems even harder. </div><div dir="auto" style="color:rgb(49,49,49);word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px">Maybe I'm just out of the loop. It sounds like you're doing pretty cool work over there. </div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px"><br></div><div dir="auto" style="color:rgb(49,49,49);font-size:1rem;word-spacing:1px"><br></div><div class="gmail_quote"><div>On Wed, Nov 29, 2017 at 10:07 AM Dave Aitel <<a href="mailto:dave.aitel@gmail.com">dave.aitel@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>Recently at RPISEC and on Twitter people have asked me what the design differences are between INNUENDO and something like Meterpreter. I think these are quite large really, and worth trying to explain. Really it boils down to a fundamentally different algorithmic approach to distributed computation.</div><div><br></div><div>So the following chart talks about various types of algorithms and how they might apply to our world. An Emergent algorithm is one where lots of tiny bits of state and different pieces of code are all sent out on your framework, where the end goal is achieved without any one piece of it really understanding how it all works. Realistically INNUENDO is not all there yet: We're still worker-slave with initiated actions for the most part. But the design is built to enable it, and we spent a lot of time future-proofing our underlying assumptions from the lessons learned from twenty years of implant construction.</div><div><br></div><div><img src="cid:16008e7723fd0cad2223" alt="pasted3" style="width:667px;max-width:100%"><br></div><div>"There are multiple different interesting classes of algorithms," is how I would start any conversation at an RPI party. It was pretty much just play with CORBA in the lab, read all of USENET and blearily eat morning donuts at 4am with the truckers at the local Dunkin Donuts as far as my university time went. This hasn't really changed, based on Immunity's recruitment mission to RPISEC last week. :)</div><div>Frankly, I still open up with that line at most parties, because these days BITCOIN is so popular that even the local PTA moms are in on the bubble. </div><div><br></div><div>In infosec we often talk about "command and control" as if hierarchical instruction was the only way to do distributed computing.  And Immunity is just as guilty as anyone else: MOSDEF was designed from the beginning to be a theoretical minimalist extensible remote computing loop. </div><div><br></div><div>MOSDEF is a loop that executes shellcode, essentially while(1){eval(input)} in machine code. To do this, you also have to store and send a minimum amount of state (aka, the file descriptor for the socket you are using), and you have to have some small conventions about protecting certain registers and the stack location, not blocking, error handling and returning, a few minor things like that. </div><div><br></div><div>At the same time, CORE was also doing quite a lot with syscall proxying, which has similar requirements except you send data instead of code. </div><div><br></div><div>Meterpreter and MOSDEF and CORE and EMPIRE and almost all simple implants have the same basic form. Command to control with maybe a wheel and spoke routing model. The same real model the IP network runs on - with addresses and destinations and a path between A and B.</div><div><br></div><div>In almost all cases, publicly available implants don't even have full routing modules built in, they're just simple tree formations where if you lose one node you lose all the nodes under it.  </div><div><br></div><div>As you can annoy people at RPI with, this model is just one kind of really boring algorithm, and the interesting class of distributed algorithm is what ants and other social insects use: <a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2915909/" target="_blank">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2915909/</a></div><div><br></div><div>One thing you learn about ants is that initial colony sizes were quite small, and all the ants looked the same, even if they had different roles. But you can't be a self respecting colony of kitchen sugar ants without five major body types these days and a colony size of tens of thousands. And yet, when we look at implants we tend to look at them fairly separately as if they were not built to all work together. . . </div><div><br></div><div>In any case, the simple operational difference between current Meterpreter and INNUENDO is you can send your request for a screenshot down in INNUENDO over a HTTPS connection, and get the response two days later over ICMP or DNS as the implant itself sees fit. These things are independent actors for the most part, when done right, much as an ant is. </div><div><br></div><div>It's like, once you've used the internet for a while, you understand that what you really wanted was MESH NETWORKING. But these days, people think Mesh networks are niche applications.  </div><div><br></div><div>In other words: The implants of the future are autonomous agents, and probably operate using a class of algorithms which is poorly studied. ;)</div><div><br></div><div><br></div><div><br></div></div>
_______________________________________________<br>
Dailydave mailing list<br>
<a href="mailto:Dailydave@lists.immunityinc.com" target="_blank">Dailydave@lists.immunityinc.com</a><br>
<a href="https://lists.immunityinc.com/mailman/listinfo/dailydave" rel="noreferrer" target="_blank">https://lists.immunityinc.com/mailman/listinfo/dailydave</a><br>
</blockquote></div></div><div dir="ltr">-- <br></div><div class="gmail_signature" data-smartmail="gmail_signature">Kyle Creyts<br></div>