Skip to content

Commit d5fc570

Browse files
Merge pull request #68 from alexandreborges/dev
Update for Malwoverview 6.1.1
2 parents 5d730d5 + fbaeef3 commit d5fc570

7 files changed

Lines changed: 86 additions & 54 deletions

File tree

README.md

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Malwoverview
22

3-
[<img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/alexandreborges/malwoverview?color=red&style=for-the-badge">](https://github.com/alexandreborges/malwoverview/releases/tag/v6.1.0) [<img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/alexandreborges/malwoverview?color=Yellow&style=for-the-badge">](https://github.com/alexandreborges/malwoverview/releases) [<img alt="GitHub Release Date" src="https://img.shields.io/github/release-date/alexandreborges/malwoverview?label=Release%20Date&style=for-the-badge">](https://github.com/alexandreborges/malwoverview/releases) [<img alt="GitHub" src="https://img.shields.io/github/license/alexandreborges/malwoverview?style=for-the-badge">](https://github.com/alexandreborges/malwoverview/blob/master/LICENSE)
3+
[<img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/alexandreborges/malwoverview?color=red&style=for-the-badge">](https://github.com/alexandreborges/malwoverview/releases/tag/v6.1.1) [<img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/alexandreborges/malwoverview?color=Yellow&style=for-the-badge">](https://github.com/alexandreborges/malwoverview/releases) [<img alt="GitHub Release Date" src="https://img.shields.io/github/release-date/alexandreborges/malwoverview?label=Release%20Date&style=for-the-badge">](https://github.com/alexandreborges/malwoverview/releases) [<img alt="GitHub" src="https://img.shields.io/github/license/alexandreborges/malwoverview?style=for-the-badge">](https://github.com/alexandreborges/malwoverview/blob/master/LICENSE)
44
[<img alt="GitHub stars" src="https://img.shields.io/github/stars/alexandreborges/malwoverview?logoColor=Red&style=for-the-badge">](https://github.com/alexandreborges/malwoverview/stargazers)
55
[<img alt="Twitter Follow" src="https://img.shields.io/twitter/follow/ale_sp_brazil?style=for-the-badge&logo=X&color=blueviolet">](https://twitter.com/ale_sp_brazil)
66
[<img alt="Downloads/Last Month" src="https://img.shields.io/pypi/dm/malwoverview?color=blue&style=for-the-badge&label=Last%20Month">](https://pypistats.org/packages/malwoverview)
@@ -55,6 +55,8 @@
5555
![Alt text](pictures/picture_46.jpg?raw=true "Title")
5656
![Alt text](pictures/picture_47.jpg?raw=true "Title")
5757
![Alt text](pictures/picture_48.jpg?raw=true "Title")
58+
![Alt text](pictures/picture_49.jpg?raw=true "Title")
59+
![Alt text](pictures/picture_50.jpg?raw=true "Title")
5860

5961
Copyright (C) 2018-2025 Alexandre Borges (https://exploitreversing.com)
6062

@@ -71,7 +73,7 @@
7173
See GNU Public License on <http://www.gnu.org/licenses/>.
7274

7375

74-
## Current Version: 6.1.0
76+
## Current Version: 6.1.1
7577

7678
Important note: Malwoverview does NOT submit samples to any endpoint by default,
7779
so it respects possible Non-Disclosure Agreements (NDAs). There're specific options
@@ -87,17 +89,17 @@ from several endpoints. In few words, it works as a client to main existing sand
8789

8890
This tool aims to :
8991

90-
1. Determine similar executable malware samples (PE/PE+) according to the import table (imphash) and group
91-
them by different colors (pay attention to the second column from output). Thus, colors matter!
92-
2. Show hash information on Virus Total, Hybrid Analysis, Malshare, Polyswarm, URLhaus, Alien Vault,
93-
Malpedia and ThreatCrowd engines.
94-
3. Determining whether the malware samples contain overlay and, if you want, extract it.
95-
4. Check suspect files on Virus Total, Hybrid Analysis and Polyswarm.
96-
5. Check URLs on Virus Total, Malshare, Polyswarm, URLhaus engines and Alien Vault.
97-
6. Download malware samples from Hybrid Analysis, Malshare, URLHaus, Polyswarm and Malpedia engines.
98-
7. Submit malware samples to VirusTotal, Hybrid Analysis and Polyswarm.
99-
8. List last suspected URLs from URLHaus.
100-
9. List last payloads from URLHaus.
92+
01. Determine similar executable malware samples (PE/PE+) according to the import table (imphash) and group
93+
them by different colors (pay attention to the second column from output). Thus, colors matter!
94+
02. Show hash information on Virus Total, Hybrid Analysis, Malshare, Polyswarm, URLhaus, Alien Vault,
95+
Malpedia and ThreatCrowd engines.
96+
03. Determining whether the malware samples contain overlay and, if you want, extract it.
97+
04. Check suspect files on Virus Total, Hybrid Analysis and Polyswarm.
98+
05. Check URLs on Virus Total, Malshare, Polyswarm, URLhaus engines and Alien Vault.
99+
06. Download malware samples from Hybrid Analysis, Malshare, URLHaus, Polyswarm and Malpedia engines.
100+
07. Submit malware samples to VirusTotal, Hybrid Analysis and Polyswarm.
101+
08. List last suspected URLs from URLHaus.
102+
09. List last payloads from URLHaus.
101103
10. Search for specific payloads on the Malshare.
102104
11. Search for similar payloads (PE32/PE32+) on Polyswarm engine.
103105
12. Classify all files in a directory searching information on Virus Total and Hybrid Analysis.
@@ -128,9 +130,9 @@ This tool aims to :
128130

129131
## CONTRIBUTORS
130132

131-
Alexandre Borges (project owner)
132-
Artur Marzano (https://github.com/Macmod)
133-
Corey Forman (https://github.com/digitalsleuth)
133+
Alexandre Borges (https://github.com/alexandreborges) | project owner and main developer
134+
Artur Marzano (https://github.com/Macmod) | co-main developer
135+
Corey Forman (https://github.com/digitalsleuth) | responsible for REMnux integration
134136
Christian Clauss (https://github.com/cclauss)
135137

136138
## HOW TO CONTRIBUTE TO THIS PROJECT
@@ -174,22 +176,30 @@ AFTER having installed Malwoverview:
174176

175177
* python-magic is NOT installed. (pip show python-magic)
176178
* python-magic-bin IS installed. (pip show python-magic-bin)
177-
178-
To use Malwoverview you should insert VirusTotal, Hybrid Analysis, URLHaus, Malshare, Polyswarm,
179-
Alien Vault, Malpedia and Triage into the .malwapi.conf configuration file
180-
(the default one at the home directory (/home/[username] or /root) -- if the file doesn't exist,
181-
so you should create it) or you could create a custom configuration file and indicate it by
179+
180+
#### Note: It is recommended to save the .malwapi.conf before any update!
181+
182+
183+
## REQUIRED APIs
184+
185+
Malwoverview does not require to insert all APIs anymore. Therefore, professionals can
186+
us it without having registered such APIs. Obviously, to use certain options is necessary to
187+
add respective API into .malwapi.conf file, whose format is shown below.
188+
189+
To use all options of Malwoverview you must insert respective API of the following services:
190+
VirusTotal, Hybrid Analysis, URLHaus, Malshare, Polyswarm, Alien Vault, Malpedia, Triage,
191+
InQuest, Virus Exchange and APInfo into the .malwapi.conf configuration file, which must be present
192+
(or created) in the home directory (/home/[username] or /root on Linux, and C:\Users\[username]
193+
on Windows. Alternatively, users could create a custom configuration file and indicate it by
182194
using the -c option.
183195

184-
Nonetheless, starting on version 4.4.2, it isn't longer necessary to insert all APIs into
185-
.malwapi.conf file before using Malwoverview. Therefore, users can only insert few APIs
186-
and use the respective options to these APIs.
196+
To highlight: if the .malwapi.conf file does not exist in your home directory, so you must
197+
create it!
187198

188199
* A special note about the Alien Vault: it is necessary to subscribe to pulses on Alien Vault
189200
website before using -n 1 option.
190201

191-
The .malwapi.conf configuration file (from the the home directory -- /home/[username] or /root)
192-
has the following format:
202+
The .malwapi.conf configuration file has the following format:
193203

194204
[VIRUSTOTAL]
195205
VTAPI =
@@ -243,6 +253,7 @@ The APIs can be requested on the respective service websites:
243253
13. IPInfo: https://ipinfo.io/
244254
14. BGPView: ihttps://bgpview.docs.apiary.io/
245255

256+
246257
----------------------------------------------------
247258
A special note about API requests to the MALPEDIA:
248259
----------------------------------------------------
@@ -254,7 +265,6 @@ you provided further information about you (LinkedIn account, Twitter and so on)
254265
because it would make simpler to proof your identity, professional profile and
255266
legitimacy, so making quicker the approval of your request.
256267

257-
-----------------------------------------------------
258268

259269
----------------------------------------------------
260270
Additional explanation about Triage:
@@ -265,7 +275,6 @@ use the "-x 1 -X \<attribute\>:\<value\>" to search for the correct ID of the ar
265275
so use this ID information with the remaining Triage options (-x [2-7]) for getting
266276
further threat hunting information from Triage endpoint.
267277

268-
-----------------------------------------------------
269278

270279
----------------------------------------------------
271280
Note about background color of the terminal:
@@ -278,8 +287,6 @@ light background.
278287

279288
-----------------------------------------------------
280289

281-
On Linux and MacOS systems, create the .malwapi.conf file within
282-
/home/\[username\] directory (Linux home user directory -- /home/[username] or /root).
283290

284291
To check the installation, execute:
285292

@@ -291,11 +298,12 @@ Further information is available on:
291298
(Github) https://github.com/alexandreborges/malwoverview
292299

293300
If you want to perform the manual installation (it is not usually necessary), so few steps
294-
should be executed:
301+
should be executed, as shown in the next sub-section.
302+
295303

296304
## MANUAL INSTALLATION (REMnux and Ubuntu)
297305

298-
1. Python version 3.8 or later (Only Python 3.x !!! It does NOT work using Python 2.7)
306+
1. Python version 3.11 or later (Only Python 3.x !!! It does NOT work using Python 2.7)
299307

300308
$ apt-get install python3.11 (for example)
301309

@@ -779,6 +787,13 @@ Malwoverview is a first response tool for threat hunting written by Alexandre Bo
779787
## HISTORY
780788

781789

790+
Version 6.1.1:
791+
792+
This version:
793+
794+
* Modifies the code to not require to registers all APIs at the first usage.
795+
* Add a new section in the README (this file) about required APIs.
796+
782797
Version 6.1.0:
783798

784799
This version:

malwoverview/malwoverview.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
# Christian Clauss (https://github.com/cclauss)
2222
# Artur Marzano (https://github.com/Macmod)
2323

24-
# Malwoverview.py: version 6.1.0
24+
# Malwoverview.py: version 6.1.1
2525

2626
import os
2727
import argparse
@@ -56,7 +56,7 @@
5656
__author__ = "Alexandre Borges"
5757
__copyright__ = "Copyright 2018-2025, Alexandre Borges"
5858
__license__ = "GNU General Public License v3.0"
59-
__version__ = "6.1.0"
59+
__version__ = "6.1.1"
6060
__email__ = "reverseexploit at proton.me"
6161

6262
def finish_hook(signum, frame):
@@ -115,17 +115,24 @@ def main():
115115
config_file = configparser.ConfigParser()
116116
config_file.read(args.config)
117117
config_dict = config_file
118-
VTAPI = config_dict.get('VIRUSTOTAL', 'VTAPI')
119-
HAAPI = config_dict.get('HYBRID-ANALYSIS', 'HAAPI')
120-
MALSHAREAPI = config_dict.get('MALSHARE', 'MALSHAREAPI')
121-
HAUSSUBMITAPI = config_dict.get('HAUSSUBMIT', 'HAUSSUBMITAPI')
122-
POLYAPI = config_dict.get('POLYSWARM', 'POLYAPI')
123-
ALIENAPI = config_dict.get('ALIENVAULT', 'ALIENAPI')
124-
MALPEDIAAPI = config_dict.get('MALPEDIA', 'MALPEDIAAPI')
125-
TRIAGEAPI = config_dict.get('TRIAGE', 'TRIAGEAPI')
126-
INQUESTAPI = config_dict.get('INQUEST', 'INQUESTAPI')
127-
VXAPI = config_dict.get('VIRUSEXCHANGE', 'VXAPI')
128-
IPINFOAPI = config_dict.get('IPINFO', 'IPINFOAPI')
118+
119+
def getoption(section, name):
120+
if config_dict.has_option(section,name):
121+
return config_dict.get(section,name)
122+
else:
123+
return ''
124+
125+
VTAPI = getoption('VIRUSTOTAL', 'VTAPI')
126+
HAAPI = getoption('HYBRID-ANALYSIS', 'HAAPI')
127+
MALSHAREAPI = getoption('MALSHARE', 'MALSHAREAPI')
128+
HAUSSUBMITAPI = getoption('HAUSSUBMIT', 'HAUSSUBMITAPI')
129+
POLYAPI = getoption('POLYSWARM', 'POLYAPI')
130+
ALIENAPI = getoption('ALIENVAULT', 'ALIENAPI')
131+
MALPEDIAAPI = getoption('MALPEDIA', 'MALPEDIAAPI')
132+
TRIAGEAPI = getoption('TRIAGE', 'TRIAGEAPI')
133+
INQUESTAPI = getoption('INQUEST', 'INQUESTAPI')
134+
VXAPI = getoption('VIRUSEXCHANGE', 'VXAPI')
135+
IPINFOAPI = getoption('IPINFO', 'IPINFOAPI')
129136

130137
optval = range(2)
131138
optval1 = range(3)
@@ -194,7 +201,10 @@ def main():
194201
args.backg not in optval,
195202
args.malsharelist not in optval8,
196203
args.virustotaloption not in optval9,
197-
args.vtpubpremium not in optval
204+
args.vtpubpremium not in optval,
205+
args.vxoption not in optval1,
206+
args.ipoption not in optval4,
207+
args.androidoption not in optval5
198208
]
199209

200210
MIN_OPTIONS = [

malwoverview/modules/ipinfo.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import malwoverview.modules.configvars as cv
2-
from malwoverview.utils.colors import mycolors
2+
from malwoverview.utils.colors import mycolors, printc
33
import requests
44

55
class IPInfoExtractor:
66
def __init__(self, IPINFOAPI):
77
self.IPINFOAPI = IPINFOAPI
88

9+
"""
10+
IPInfo API can be used anonymously up to 1000 requests per day
911
def requestIPINFOAPI(self):
10-
if self.IPINFOAPI == '':
11-
print(mycolors.foreground.red + "\nTo use IPInfo.io services, you must create the .malwapi.conf file under your user home directory (on Linux is $HOME\\.malwapi.conf and on Windows is in C:\\Users\\[username]\\.malwapi.conf) and insert the IPInfo API key according to the format shown on the Github website." + mycolors.reset + "\n")
12-
exit(1)
13-
12+
if self.IPINFOAPI == '':
13+
print(mycolors.foreground.red + "\nTo use IPInfo.io services, you must create the .malwapi.conf file under your user home directory (on Linux is $HOME\\.malwapi.conf and on Windows is in C:\\Users\\[username]\\.malwapi.conf) and insert the IPInfo API key according to the format shown on the Github website." + mycolors.reset + "\n")
14+
exit(1)
15+
"""
16+
1417
def _raw_ip_info(self, ip_address):
1518
url = f"https://ipinfo.io/{ip_address}?token={self.IPINFOAPI}"
1619

@@ -21,7 +24,7 @@ def _raw_ip_info(self, ip_address):
2124
return {'error': e}
2225

2326
def get_ip_details(self, ip_address):
24-
self.requestIPINFOAPI()
27+
# self.requestIPINFOAPI()
2528

2629
data = self._raw_ip_info(ip_address)
2730

malwoverview/modules/multipleip.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
from malwoverview.utils.colors import mycolors, printr
1+
from malwoverview.utils.colors import mycolors, printr, printc
22
import malwoverview.modules.configvars as cv
33

44
class MultipleIPExtractor:
55
def __init__(self, extractors):
66
self.extractors = extractors
77

88
def get_multiple_ip_details(self, ip_address):
9+
if ip_address is None:
10+
printc("A valid IP address is required.", mycolors.foreground.error(cv.bkg))
11+
return
12+
913
for extractor in self.extractors:
1014
extractor_obj = self.extractors[extractor]
1115
if extractor == "IPInfo":

pictures/picture_49.jpg

138 KB
Loading

pictures/picture_50.jpg

69.5 KB
Loading

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
setup(
1313
name="malwoverview",
14-
version="6.1.0",
14+
version="6.1.1",
1515
author="Alexandre Borges",
1616
author_email="reverseexploit@proton.me",
1717
license="GNU GPL v3.0",

0 commit comments

Comments
 (0)