| 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 |