A history of Development Tradecraft DOs and DON'Ts from Vault7 - Google スプレッドシート
ABCDEFGHIJKLMNOPQRSTUVWXYZAA
1
TypeDirectiveRationaleAddedRemovedModifiedClassification
2
TitleDevelopment Tradecraft DOs and DON'TsVersion 1Version 8Secret
3
TitleDraft Development Tradecraft DOs and DON'TsVersion 8Version 46Secret
4
TitleDevelopment Tradecraft DOs and DON'TsVersion 46Secret
5
6
ClassificationSECRET//NOFORNVersion 1Version 48Secret
7
ClassificationTOP SECRET//NOFORNVersion 48Version 49Top Secret
8
ClassificationSECRET//NOFORNVersion 49Secret
9
(U) GeneralVersion 51
10
GeneralDO remove all data that demonstrates CIA, USG, or its witting partner companies involvement in the creation or use of the binary/tool/etc.Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 1Version 10Secret
11
GeneralDO NOT have data that demonstrates CIA, USG, or its witting partner companies involvement in the creation or use of the binary/tool/etc in the binary.Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 10Version 34Secret
12
GeneralDO NOT leave data in a binary file that demonstrates CIA, USG, or its witting partner companies involvement in the creation or use of the binary/tool.Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 34Version 50Secret
13
General(S//NF) DO NOT leave data in a binary file that demonstrates CIA, USG, or its witting partner companies involvement in the creation or use of the binary/tool.(S//NF) Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities
Version 50
14
GeneralDO remove all data that contains CIA cover terms or operational names.Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 1Version 10Secret
15
GeneralDO NOT have data that contains CIA cover terms or operational names in the binary.Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 10Version 34Secret
16
GeneralDO NOT have data that contains CIA cover terms, operation code names or operational names in the binary.Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 34Version 35Secret
17
GeneralDO NOT have data that contains CIA cover terms, compartments, operation code names or other CIA specific terminology in the binary.Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 35Version 45Secret
18
GeneralDO NOT have data that contains CIA and USG cover terms, compartments, operation code names or other CIA and USG specific terminology in the binary.Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 45Version 50Secret
19
General(S//NF) DO NOT have data that contains CIA and USG cover terms, compartments, operation code names or other CIA and USG specific terminology in the binary.(S//NF) Attribution of binary/tool/etc by an adversary can cause irreversible impacts to past, present and future USG operations and equities.Version 50
20
GeneralDO remove all "dirty words" (see dirty word list – TBD)Dirty words, such as hacker terms, may cause unwarranted scrutiny of the binary file in question.Version 1Version 10Secret
21
GeneralDO NOT have "dirty words" (see dirty word list – TBD) in the binaryDirty words, such as hacker terms, may cause unwarranted scrutiny of the binary file in question.Version 10Version 50Secret
22
(S//NF) DO NOT have "dirty words" (see dirty word list – TBD) in the binary.(S//NF) Dirty words, such as hacker terms, may cause unwarranted scrutiny of the binary file in question.Version 50
23
GeneralDO obfuscate or encrypt all strings and configuration data that directly relate to tool functionality. Consideration should be made to also only de-obfuscating strings in-memory and only as they are needed. When a previously de-obfuscated value is no longer needed, it should be wiped from memory.String data and/or configuration data is useful to analysts and reverse-engineers.Version 1Version 12Secret
24
GeneralDO obfuscate or encrypt all strings and configuration data that directly relate to tool functionality. Consideration should be made to also only de-obfuscating strings in-memory only as they are needed. When a previously de-obfuscated value is no longer needed, it should be wiped from memory.String data and/or configuration data is useful to analysts and reverse-engineers.Version 12Version 27Secret
25
GeneralDO obfuscate or encrypt all strings and configuration data that directly relate to tool functionality. Consideration should be made to also only de-obfuscating strings in-memory at the moment the data is needed. When a previously de-obfuscated value is no longer needed, it should be wiped from memory.String data and/or configuration data is very useful to analysts and reverse-engineers.Version 27Version 43Secret
26
GeneralDO obfuscate or encrypt all strings and configuration data that directly relate to tool functionality. Consideration should be made to also only de-obfuscating strings in-memory at the moment the data is needed. When a previously de-obfuscated value is no longer needed, it should be wiped from memory.String data and/or configuration data is very useful to analysts and reverse-engineers.Version 43Version 50Secret
27
General(S//NF) DO obfuscate or encrypt all strings and configuration data that directly relate to tool functionality. Consideration should be made to also only de-obfuscating strings in-memory at the moment the data is needed. When a previously de-obfuscated value is no longer needed, it should be wiped from memory.(S//NF) String data and/or configuration data is very useful to analysts and reverse-engineers.Version 50
28
GeneralDO NOT decrypt or de-obfuscate all string data or configuration data immediately upon execution.Raises the difficulty for automated dynamic analysis of the binary to find sensitive data.Version 1Version 50Secret
29
General(S//NF) DO NOT decrypt or de-obfuscate all string data or configuration data immediately upon execution.(S//NF) Raises the difficulty for automated dynamic analysis of the binary to find sensitive data.Version 50
30
GeneralDO remove sensitive data (encryption keys, raw collection data, shellcode, etc) from memory as soon as the data is no longer needed in plain-text form.Raises the difficulty for incident response and forensics review.Version 2Version 3Secret
31
GeneralDO explicitly remove sensitive data (encryption keys, raw collection data, shellcode, etc) from memory as soon as the data is no longer needed in plain-text form. DO NOT RELY ON THE OPERATING SYSTEM TO DO THIS UPON TERMINATION OF EXECUTION.Raises the difficulty for incident response and forensics review.Version 3Version 27Secret
32
GeneralDO explicitly remove sensitive data (encryption keys, raw collection data, shellcode, uploaded modules, etc) from memory as soon as the data is no longer needed in plain-text form. DO NOT RELY ON THE OPERATING SYSTEM TO DO THIS UPON TERMINATION OF EXECUTION.Raises the difficulty for incident response and forensics review.Version 27Version 50Secret
33
General(S//NF) DO explicitly remove sensitive data (encryption keys, raw collection data, shellcode, uploaded modules, etc) from memory as soon as the data is no longer needed in plain-text form. DO NOT RELY ON THE OPERATING SYSTEM TO DO THIS UPON TERMINATION OF EXECUTION.(S//NF) Raises the difficulty for incident response and forensics review.Version 50
34
GeneralDO utilize a deployment-time unique key for obfuscation/de-obfuscation of sensitive strings and configuration data.Raises the difficulty for analysis of multiple deployments of the same tool.Version 1Version 7Secret
35
GeneralDO utilize a deployment-time unique key for obfuscation/de-obfuscation of sensitive strings and configuration data.Raises the difficulty of analysis of multiple deployments of the same tool.Version 7Version 50Secret
36
General(S//NF) DO utilize a deployment-time unique key for obfuscation/de-obfuscation of sensitive strings and configuration data.(S//NF) Raises the difficulty of analysis of multiple deployments of the same tool.Version 50
37
GeneralDO strip all debug symbol information from the final build of a tool.Raises the difficulty for analysis and reverse-engineering.Version 2Version 27Secret
38
GeneralDO strip all debug symbol information, manifests(MSVC artifact), build paths, developer usernames from the final build of a binary.Raises the difficulty for analysis and reverse-engineering.Version 27Version 29Secret
39
GeneralDO strip all debug symbol information, manifests(MSVC artifact), build paths, developer usernames from the final build of a binary.Raises the difficulty for analysis and reverse-engineering, and removes artifacts used for attribution/origination.Version 29Version 50Secret
40
General(S//NF) DO strip all debug symbol information, manifests(MSVC artifact), build paths, developer usernames from the final build of a binary.(S//NF) Raises the difficulty for analysis and reverse-engineering, and removes artifacts used for attribution/origination.Version 50
41
GeneralDO strip all debugging output (e.g. calls to printf(), OutputDebugString(), etc) from the final build of a tool.Raises the difficulty for analysis and reverse-engineering.Version 2Version 50Secret
42
General(U//FOUO) DO strip all debugging output (e.g. calls to printf(), OutputDebugString(), etc) from the final build of a tool.(S//NF) Raises the difficulty for analysis and reverse-engineering.Version 50
43
GeneralDO obfuscate the importing/calling of functions that may leak sensitive information about tool functionality (e.g. VirtualAlloc, CreateRemoteThread, etc)Raises the difficulty for analysis and reverse-engineering.Version 2Version 20Secret
44
GeneralDO NOT explicitly import/call functions that is not consistent with a tool's overt functionality (i.e. WriteProcessMemory, VirtualAlloc, CreateRemoteThread, etc - for binary that is supposed to be a notepad replacement).Lowers potential scrutiny of binary and raises the difficulty for static analysis and reverse-engineering.Version 20Version 25Secret
45
GeneralDO NOT explicitly import/call functions that is not consistent with a tool's overt functionality (i.e. WriteProcessMemory, VirtualAlloc, CreateRemoteThread, etc - for binary that is supposed to be a notepad replacement).Lowers potential scrutiny of binary and slightly raises the difficulty for static analysis and reverse-engineering.Version 25Version 50Secret
46
General(S//NF) DO NOT explicitly import/call functions that is not consistent with a tool's overt functionality (i.e. WriteProcessMemory, VirtualAlloc, CreateRemoteThread, etc - for binary that is supposed to be a notepad replacement).(S//NF) Lowers potential scrutiny of binary and slightly raises the difficulty for static analysis and reverse-engineering.Version 50
47
GeneralDO NOT export function sensitive function names; if exported are required for the tool, utilize an ordinal or a benign function name.Raises the difficulty for analysis and reverse-engineering.Version 2Version 13Secret
48
GeneralDO NOT export sensitive function names; if exported are required for the tool, utilize an ordinal or a benign function name.Raises the difficulty for analysis and reverse-engineering.Version 13Version 14Secret
49
GeneralDO NOT export sensitive function names; if having exports are required for the binary, utilize an ordinal or a benign function name.Raises the difficulty for analysis and reverse-engineering.Version 14Version 50Secret
50
General(S//NF) DO NOT export sensitive function names; if having exports are required for the binary, utilize an ordinal or a benign function name.(S//NF) Raises the difficulty for analysis and reverse-engineering.Version 50
51
GeneralDO NOT write crashdump, coredump or other artifacts in the event of a program crash.Avoids suspicion by the end user and system admins, and raises the difficulty for incident response and reverse-engineering.Version 5Version 6Secret
52
GeneralDO NOT generate crashdump, coredump, "Blue Screen", Dr Watson or other dialog pop-ups and/or other artifacts in the event of a program crash.Avoids suspicion by the end user and system admins, and raises the difficulty for incident response and reverse-engineering.Version 6Version 27Secret
53
GeneralDO NOT generate crashdump files, coredump files, "Blue" screens, Dr Watson or other dialog pop-ups and/or other artifacts in the event of a program crash. (NOTE: This requires forcing a program crash during testing in order to properly verify)Avoids suspicion by the end user and system admins, and raises the difficulty for incident response and reverse-engineering.Version 27Version 45Secret
54
GeneralDO NOT generate crashdump files, coredump files, "Blue" screens, Dr Watson or other dialog pop-ups and/or other artifacts in the event of a program crash. DO attempt to force a program crash during unit testing in order to properly verify this.Avoids suspicion by the end user and system admins, and raises the difficulty for incident response and reverse-engineering.Version 45Version 50Secret
55
General(S//NF) DO NOT generate crashdump files, coredump files, "Blue" screens, Dr Watson or other dialog pop-ups and/or other artifacts in the event of a program crash. DO attempt to force a program crash during unit testing in order to properly verify this.(S//NF) Avoids suspicion by the end user and system admins, and raises the difficulty for incident response and reverse-engineering.Version 50
56
GeneralDO NOT perform operations that will cause the computer to be unresponsive to the user (e.g. CPU spikes, "screen freezing", etc)Avoids unwanted attention from the user or system administrator to tool's existence and behavior.Version 5Version 11Secret
57
GeneralDO NOT perform operations that will cause the target computer to be unresponsive to the user (e.g. CPU spikes, "screen freezing", etc)Avoids unwanted attention from the user or system administrator to tool's existence and behavior.Version 11Version 45Secret
58
GeneralDO NOT perform operations that will cause the target computer to be unresponsive to the user (e.g. CPU spikes, screen flashes, screen "freezing", etc).Avoids unwanted attention from the user or system administrator to tool's existence and behavior.Version 45Version 50Secret
59
General(S//NF) DO NOT perform operations that will cause the target computer to be unresponsive to the user (e.g. CPU spikes, screen flashes, screen "freezing", etc).(S//NF) Avoids unwanted attention from the user or system administrator to tool's existence and behavior.Version 50
60
GeneralDO provide a means to "uninstall"/"remove" implants, function hooks, injected threads, services, forked processes, etc whenever possible. Explicitly document the procedures and side effects (even if the documentation is "There is no uninstall for this <feature>").Avoids unwanted data left on target. Also, allows operators to make better operational risk assessment and fully understand the implications of using a tool or specific feature of a tool.Version 25Version 26Secret
61
GeneralDO provide a means to completely "uninstall"/"remove" implants, function hooks, injected threads, dropped files, registry keys, services, forked processes, etc whenever possible. Explicitly document (even if the documentation is "There is no uninstall for this <feature>") the procedures, permissions required and side effects of removal.Avoids unwanted data left on target. Also, proper documentation allows operators to make better operational risk assessment and fully understand the implications of using a tool or specific feature of a tool.Version 26Version 50Secret
62
General(S//NF) DO provide a means to completely "uninstall"/"remove" implants, function hooks, injected threads, dropped files, registry keys, services, forked processes, etc whenever possible. Explicitly document (even if the documentation is "There is no uninstall for this <feature>") the procedures, permissions required and side effects of removal.(S//NF) Avoids unwanted data left on target. Also, proper documentation allows operators to make better operational risk assessment and fully understand the implications of using a tool or specific feature of a tool.Version 50
63
GeneralDO NOT leave dates such as compile times, build times, access times, etc. that correlate to USG/General US core working hours (ex. 8am-6pm Eastern time)Avoids direct correlation to origins United States.Version 25Version 30Secret
64
GeneralDO NOT leave dates such as compile times, build times, access times, etc. that correlate to general US core working hours (i.e. 8am-6pm Eastern time)Avoids direct correlation to origination in the United States.Version 30Version 33Secret
65
GeneralDO NOT leave dates/times such as compile timestamps, linker timestamps, build times, access times, etc. that correlate to general US core working hours (i.e. 8am-6pm Eastern time)Avoids direct correlation to origination in the United States.Version 33Version 50Secret
66
General(S//NF) DO NOT leave dates/times such as compile timestamps, linker timestamps, build times, access times, etc. that correlate to general US core working hours (i.e. 8am-6pm Eastern time)(S//NF) Avoids direct correlation to origination in the United States.Version 50
67
GeneralDO make all reasonable efforts to keep binary file sizes that will go on target to a minimum (without the use of packers or compression). Ideal binary file sizes should be under 150KB for a fully featured tool.Shortens overall "time on air" not only to get the tool on target, but to time to execute functionality and clean-up.Version 27Version 32Secret
68
GeneralDO make all reasonable efforts to minimize binary file size for all binaries that will be uploaded to a remote target (without the use of packers or compression). Ideal binary file sizes should be under 150KB for a fully featured tool.Shortens overall "time on air" not only to get the tool on target, but to time to execute functionality and clean-up.Version 32Version 50Secret
69
General(S//NF) DO make all reasonable efforts to minimize binary file size for all binaries that will be uploaded to a remote target (without the use of packers or compression). Ideal binary file sizes should be under 150KB for a fully featured tool.(S//NF) Shortens overall "time on air" not only to get the tool on target, but to time to execute functionality and clean-up.Version 50
70
(U) NetworkingVersion 51
71
NetworkingDO end-to-end encrypt all network communications between tools and/or LPsVersion 4Version 5Secret
72
NetworkingDO end-to-end encrypt all network communications between tools and/or LPsStifles network traffic analysis and avoids exposing operational/collection data.Version 5Version 6Secret
73
NetworkingDO use end-to-end encryption for all network communications. NEVER use networking protocols which break the end-to-end principle with respect to encryption of payloads.Stifles network traffic analysis and avoids exposing operational/collection data.Version 6Version 50Secret
74
Networking(U//FOUO) DO use end-to-end encryption for all network communications. NEVER use networking protocols which break the end-to-end principle with respect to encryption of payloads.(S//NF) Stifles network traffic analysis and avoids exposing operational/collection data.Version 50
75
NetworkingDO NOT solely rely on SSL/TLS to secure data in transit.Numerous man-in-middle attack vectors and publicly disclosed flaws in the protocol.Version 4Version 50Secret
76
(S//NF) DO NOT solely rely on SSL/TLS to secure data in transit.(S//NF) Numerous man-in-middle attack vectors and publicly disclosed flaws in the protocol.Version 50
77
NetworkingDO NOT allow network traffic, such as C2 packets, to be re-playable.Version 4Version 5Secret
78
NetworkingDO NOT allow network traffic, such as C2 packets, to be re-playable.Protects the integrity of operational equities.Version 5Version 50Secret
79
Networking(S//NF) DO NOT allow network traffic, such as C2 packets, to be re-playable.(S//NF) Protects the integrity of operational equities.Version 50
80
NetworkingDO use ITEF RFC compliant network protocols as a blending layer. The actual data, which must be encrypted in transit across the network, should be tunneled through a well known and standardized protocol (e.g. HTTPS)Custom protocols can stand-out to network analysts and IDS filters.Version 5Version 50Secret
81
Networking(S//NF) DO use ITEF RFC compliant network protocols as a blending layer. The actual data, which must be encrypted in transit across the network, should be tunneled through a well known and standardized protocol (e.g. HTTPS)(S//NF) Custom protocols can stand-out to network analysts and IDS filters.Version 50
82
NetworkingDO NOT break compliance of an RFC protocol that is being used as a blending layer. (i.e. Wireshark should not flag the traffic as being broken or mangled)Broken network protocols can easily stand-out in IDS filters and network analysis.Version 5Version 50Secret
83
Networking(S//NF) DO NOT break compliance of an RFC protocol that is being used as a blending layer. (i.e. Wireshark should not flag the traffic as being broken or mangled)(S//NF) Broken network protocols can easily stand-out in IDS filters and network analysis.Version 50
84
NetworkingDO use variable size and timing of beacons/network communications. DO NOT send fixed size and timing packets.Raises the difficulty of network analysis and correlation of network activity.Version 6Version 27Secret
85
NetworkingDO use variable size and timing (aka jitter) of beacons/network communications. DO NOT send fixed size and timing packets.Raises the difficulty of network analysis and correlation of network activity.Version 27Version 36Secret
86
NetworkingDO use variable size and timing (aka jitter) of beacons/network communications. DO NOT send packets with a fixed size and timing.Raises the difficulty of network analysis and correlation of network activity.Version 36Version 42Secret
87
NetworkingDO use variable size and timing (aka jitter) of beacons/network communications. DO NOT predicatively send packets with a fixed size and timing.Raises the difficulty of network analysis and correlation of network activity.Version 42Version 50Secret
88
Networking(S//NF) DO use variable size and timing (aka jitter) of beacons/network communications. DO NOT predicatively send packets with a fixed size and timing.(S//NF) Raises the difficulty of network analysis and correlation of network activity.Version 50
89
NetworkingDO proper cleanup of network connections. DO NOT leave around stale network connections.Raises the difficulty of network analysis and incident response.Version 27Version 50Secret
90
Networking(S//NF) DO proper cleanup of network connections. DO NOT leave around stale network connections.(S//NF) Raises the difficulty of network analysis and incident response.Version 50
91
(U) Disk I/OVersion 51
92
Disk I/ODO explicitly document the "disk footprint" on target that could be potentially created by various features of a binary/tool.Enables better operational risk assessments with knowledge of potential file system forensic artifacts.Version 27Version 37Secret
93
Disk I/ODO explicitly document the "disk footprint" that could be potentially created by various features of a binary/tool on a remote target.Enables better operational risk assessments with knowledge of potential file system forensic artifacts.Version 37Version 42Secret
94
Disk I/ODO explicitly document the "disk forensic footprint" that could be potentially created by various features of a binary/tool on a remote target.Enables better operational risk assessments with knowledge of potential file system forensic artifacts.Version 42Version 50Secret
95
Disk I/O(S//NF) DO explicitly document the "disk forensic footprint" that could be potentially created by various features of a binary/tool on a remote target.(S//NF) Enables better operational risk assessments with knowledge of potential file system forensic artifacts.Version 50
96
Disk I/ODO avoid reading, writing and/or caching data to disk unnecessarily. Be cognizant of 3rd party code that may implicitly write/cache data to disk.Lowers potential for forensic artifacts and potential signatures.Version 4Version 15Secret
97
Disk I/ODO NOT read, write and/or cache data to disk unnecessarily. Be cognizant of 3rd party code that may implicitly write/cache data to disk.Lowers potential for forensic artifacts and potential signatures.Version 15Version 50Secret
98
Disk I/O(S//NF) DO NOT read, write and/or cache data to disk unnecessarily. Be cognizant of 3rd party code that may implicitly write/cache data to disk.(S//NF) Lowers potential for forensic artifacts and potential signatures.Version 50
99
Disk I/ODO NOT write plain-text collection data to disk.Raises difficulty of forensic analysis.Version 4Version 38Secret
100
Disk I/ODO NOT write plain-text collection data to disk.Raises difficulty of incident response and forensic analysis.Version 38Version 50Secret