Characteristic | Description |
Basis | Type of method as in host- or network-based |
Hub | Relies on network topology where single server has multiple clients |
IRC | Relies on specific IRC port number or model of communications patterns |
Flow-Chars | Uses flow characteristics to correlate C&C communications and/or attacks |
Time | Correlates events or network traffic that occur within a time window |
Net-Det | Relies on automated, network-based detection of botnet attacks such as scanning |
Syntax | Relies on bots' use of a particular nickname, command, or protocol syntax |
Taint | Requires that bots' execution of commands demonstrates explicit information flow |
Method | Basis | Hub | IRC | Flow-Chars | Time | Net-Det | Syntax | Taint |
Strayer [4] | Net- | No | Yes | bpp, bps, pps, etc. | Yes | No | No | No |
Rishi [5] | Net- | No | Yes | No | No | No | Yes | No |
Karasaridis [7] | Net- | Yes | Yes | bpp, fpa, ppf | No | Yes | No | No |
BotSwat [8] | Host- | No | No | No | No | No | No | Yes |
BotHunter [10] | Net- | No | Yes | No | Yes | Yes | Yes | No |
BotMiner [13] | Net- | No | No | bpp, bps, fph, ppf | Yes | Yes | No | No |
void launder(char* src, char* dst, int n) { for (int i = 0; i < n; i++) { char c = 0; switch( src[i] ) { case 'a': c = 'a'; break; case 'b': c = 'b'; break; ... } // end of laundering char dst[i] = c; // write laundered char } }An approach to implicit information flow analysis as in [9] entails statically determining all instructions whose execution depends on a tainted branch condition and marking the destination operands of those instructions as tainted. A bot, however, could devise a command syntax that used tainted data in a manner that was indistinguishable from benign programs' use of tainted data. In particular, rather than a command being a string that is sent as a packet payload, each letter of the command could be encoded by the packet's length (or by other malleable fields of lower-layer protocol packets). Upon invocation of recv, the bot would check recv's return value which identifies the number of bytes received; from this the bot would recover the corresponding letter. The rub is that normal use of recv entails branching on its return value to select the appropriate next steps. Thirdly, bots can use covert channels to obscure their responsiveness to network-derived data. The implementation complexity of these techniques ranges from High to Very High. The effects on botnet utility vary from None to increasing the required lead time for techniques that entail sending multiple packets to accomplish what was formerly achieved by one.
Method | Evasive Tactic | Implementation Complexity | Effects on Utility |
Strayer [4] | Inject packet- or flow-level noise | High | None |
Rishi [5] | Encrypt C&C traffic | Medium | None |
Karasaridis [7] | Inject packet- or flow-level noise | High | None |
BotSwat [8] | Launder tainted data | High | None |
BotHunter [10] | Attack time thresholds | High | ¯Attack rate |
BotMiner [13] | Inject packet- or flow-level noise | High | None |