Dependencies and Usage
ir-rescue relies on a number of third-party utilities for gathering specific data from hosts. The versions of the tools are listed in the next section and are provided with the package as is and, therefore, their licenses and user agreements must be accepted before running ir-rescue . Their descriptions and organization in the folder tree structure are given below, with both 32-bit and 64-bit versions of the tools included adjacently, if applicable:
tools-win\: third-party tools folder:
ascii\: text ASCII art files in
cfg\: configuration files:
ir-rescue.conf: main configuration file;
nonrecursive.txt: non-recursive locations for multiple tools;
recursive.txt: recursive locations for multiple tools;
cygwin\: Cygwin tools and Dynamic Linked Libraries (DLLs):
tr.exe: used to cut out non-printable characters;
grep.exe: used to filter date with regular expressions;
evt\: Windows events tools:
fs\: filesystem tools:
tsk\: The Sleuth Kit (TSK) tools and DLLs:
fls.exe: walks the Master File Table (MFT);
AlternateStreamView.exe: lists Alternate Data Streams (ADSs);
ExtractUsnJrnl.exe: extracts the
C:\$Extend\$UsnJrnl(NTFS journal) file without the sparsed zeroes;
md5deep.exe: computes Message Digest 5 (MD5) hash values;
ntfsinfo.exe: shows information about NTFS;
RawCopy.exe: extracts data at the NTFS level;
mal\: malware tools:
autoruns.exe: dumps autorun locations to the autoruns binary format;
autorunsc.exe: lists autorun locations;
densityscout.exe: computes an entropy-based measure for detecting packers and encryptors;
DriverView.exe: lists loaded kernel drivers;
handle.exe: lists object handles;
iconsext.exe: extracts icons from Portable Executables (PEs);
Listdlls.exe: lists loaded DLLs;
pslist.exe: lists running processes;
PsService.exe: lists services;
sigcheck.exe: checks digital signatures within PEs;
WinPrefetchView.exe: displays the contents of prefetch files;
mem\: memory tools:
winpmem_1.6.2.exe: dumps the memory;
misc\: miscellaneous tools:
LastActivityView.exe: displays a timeline of recent system activity;
OfficeIns.exe: lists installed Microsoft Office add-ins;
USBDeview.exe: lists previously and currently connected USB devices;
net\: network tools:
psfile.exe: lists files opened remotely;
tcpvcon.exe: lists TCP connections and ports and UDP ports;
sys\: system tools:
accesschk.exe: lists user permissions of the specified locations;
logonsessions.exe: lists currently active logon sessions;
PsGetsid.exe: translates between Security Identifiers (SIDs) and user names and vice-versa;
Psinfo.exe: displays system software and hardware information;
psloggedon.exe: lists locally logged on users that have their profile in the registry;
web\: web tools:
BrowsingHistoryView.exe: lists browsing history from multiple browsers;
ChromeCacheView.exe: displays the Google Chrome cache;
IECacheView.exe: displays the Internet Explorer cache;
MozillaCacheView.exe: displays the Mozilla Firefox cache;
yara\: YARA tools and signatures:
yara(32|64).exe: YARA main executable;
yarac(32|64).exe: YARA rules compiler;
7za.exe: compresses files and folders;
screenshot-cmd.exe: takes screenshots;
sdelete(32|64).exe: securely deletes files and folders;
data\: data folder created during runtime with the collected data:
ir-rescue: folder for
ir-rescue.log: verbose log file of status messages;
screenshot-#: numbered screenshots;
- folders named according to the data type set for collection.
ir-rescue needs to be run under a command line console with administrator rights and requires no arguments. It makes use of a configuration file to set desired options. As such, executing the script simply needs the issuing of the Batch file as follows:
Some tools that perform recursive searches or scans are set only to recurse on specific folders. This makes the data collection more targeted while taking into account run time performance as the folders specified are likely locations for analysis due to extensive use by malware. By default, the locations set in
tools-win\cfg\recursive.txt for recursive search are the following:
In turn, the locations also set in
tools-win\cfg\nonrecursive.txt for non-recursive search are the following:
Some of the tools have dedicated files with specific locations to and not to recurse. These are also kept under
tools-win\cfg\ and are named
nonrecursive-<tool>.txt , with
<tool> being changed to the tool name. All these files can be changed with the desired locations for analysis. Each file must have one location as full path per line.
During runtime, all characters printed to the Standard Output (
STDOUT ) and Standard Error (
STDERR ) channels are logged to UTF-8 encoded text files. This means that the output of tools are stored in corresponding folders and text files. Status ASCII messages are still printed to the console in order to check the execution progress. After collection, data can be compressed into a password-protected archive and accordingly deleted afterwards, if set to do so. The password of the resulting encrypted archive is, by default, “infected” without quotes.
The configuration file is composed of simple binary directives (
false ) for the general behaviour of the script, for which data types to collect and for which advanced tools to run. Lines preceded by a pound sign are considered comments. These are used to briefly describe what each option does, to enumerate folders, files or registry keys important to provide some context, as well as to list relevant tools.
Essentially, data is grouped into the types given by the following directives:
memory: this options sets the collection of the memory;
registry: this option sets the collection of system and user registry;
events: this option sets the collection of Windows event logs;
system: this option sets the collection of system-related information;
network: this option sets the collection of network data;
filesystem: this option sets the collection of data related with NTFS and files;
malware: this option sets the collection of system data that can be used to spot malware;
web: this option sets the collection of browsing history and caches;
misc: this option sets the collection of miscellaneous data that does not quite fit other options.
On the one hand, the usage of advanced tools set by the
yara options is independent of the configurations made to the collection of data types. On the other hand, directives under the respective main options of the data types are tied to them, meaning that they are disregarded if the main ones are set to
false . For example,
memory-dump=true , the option that instructs the tool to dump the Random Access Memory (RAM), is ignored if
memory=false . The same goes for the
<option>-all option, which sets all options of a certain data type to
true for convenience. All options not found or commented in the configuration file are set to
false during runtime.
Note that the
iconsext option is useful to look for binaries compiled with unusual frameworks that set PE icons ( e.g. , Python). Moreover, YARA rules need to have a
*.yar file extension and to be put in the
tools-win\yara\rules\ folder. The output of all advanced tools are stored under the
malware resulting folder.
Below is a minimal example of the configuration file setting the collection of the RAM, system registry and Windows event logs in text format, as well as the compression of the final data folder with password “infected” (without quotes).
# ir-rescue-win configuration file # accepted values: 'true' or 'false' (exclusive) # general killself=false sdelete=false zip=true zpassword=infected ascii=false # modules memory=true registry=true events=true # memory memory-dump=true # registry registry-system=true # events events-txt=true
Third-Party Tool List and References
- Sysinternals : the Sysinternals tools have been mostly developed by Mark Russinovich and are free to use under the Sysinternals Software License Terms . The full list of tools used by ir-rescue is
- NirSoft : the NirSoft suite of tools are developed by Nir Sofer and are released as freeware utilities. The full list of tools used by ir-rescue is
- Cygwin : the Cygwin project is open-source and is used by ir-rescue only to filter outputs with the
grep.exe(v2.21) utilities, using the 32-bit DLLs.
- The Sleuth Kit (TSK) (v4.3.0): the TSK is an open-source forensic tool to analyze hard drives at the file system level, used by ir-rescue only to walk the MFT with
- 7za.exe (v9.20): 7-Zip is an open-source compression utility developed by Igor Pavlov and release under the GNU LGPL license.
- winpmem_1.6.2 (v1.6.2): the Pmem suite is part of the open-source Recall memory analysis framework, used by ir-rescue to dump the memory.
- md5deep.exe (v4.4): the md5deep utility is open-source and is maintained by Jesse Kornblum.
- RawCopy.exe (v184.108.40.206) and ExtractUsnJrnl.exe (v220.127.116.11): RawCopy (essentially, a combination of ifind and icat from TSK) and ExtractUsnJrnl are open-source NTFS utilities to extract data and special files developed by Joakim Schicht.
- densityscout.exe (build 45): the DensityScout utility to compute entropy was written by Christian Wojner and is released under the ISC license.
- YARA (v3.5.0): YARA is an open-source signature scheme for malware that can be used to perform scans of specific indicators.
- screenshot-cmd.exe : screenshot-cmd is an open-source utility released under the BSD-3 license to take screenshots.