Awesome
<h1> <picture> <source media="(prefers-color-scheme: dark)" srcset="static/images/logo_dark.png"> <img alt="logo" width="400px" src="static/images/logo.png"> </picture> </h1>Artemis is a modular vulnerability scanner. It's the tool that powers CERT PL scanning activities by checking various aspects of website security and building easy-to-read messages ready to be sent to the scanned organizations.
Quick Start π¨ | Docs π
If you want to use additional modules that weren't included here due to non-BSD-compatible licenses, browse to the Artemis-modules-extra repository.
If you want to modify/develop Artemis, read Development first.
Artemis is experimental software, under active development - use at your own risk.
To chat about Artemis, join the Discord server:
Cooperation and conferences
<div style="margin-bottom: 5px"> <img alt="BlackHat" src="static/images/blackhat.png"> </div>Artemis was presented at BlackHat USA 2024 in Las Vegas. For more information about Artemis at BlackHat USA click here.
<br/> <div style="margin-bottom: 5px"> <img alt="BlackHat" src="static/images/tf_csirt.png"> </div>The project was also presented at the 71st TF-CSIRT Meeting in Copenhagen, 69th TF-CSIRT Meeting in Bucharest and the CONFidence conference, among others.
Cooperation
Artemis development was supported by Google Summer of Code 2024.
Features
For an up-to-date list of features, please refer to the documentation. The most important one is the possibility to easily export reports such as:
The following addresses contain version control system data:
Making a code repository public may allow an attacker to learn the inner workings of a system, and if it contains passwords or API keys - also gain unauthorized access. Such data shouldn't be publicly available.
The following addresses contain old Joomla versions:
- https://subdomain2.example.com:443 - Joomla 2.5.4
If a site is no longer used, we recommend shutting it down to eliminate the risk of exploitation of known vulnerabilities in older Joomla versions. Otherwise, we recommend regular Joomla core and plugin updates.
The possibility to automatically prepare such reports enabled us to notify entities in our constituency about hundreds of thousands of vulnerabilities.
Screenshots
<a name="development"></a>
Development
To start a locally modified version of Artemis, run:
./scripts/start_dev
This script automatically copies the example environment file (env.example) to .env if it doesn't exist. You can then configure the settings in the .env file according to your needs. This includes customizing the user-agent by setting the CUSTOM_USER_AGENT variable, as well as other relevant parameters. For a complete list of configuration variables and their descriptions, please refer to the Configuration section in the documentation.
The Artemis image is then built locally (from the code you are developing) not downloaded from Docker Hub.
For web
, you will also be able to see the results of code modifications on the page without reloading the entire container.
Tests
To run the tests, use:
./scripts/test
Code formatting
Artemis uses pre-commit
to run linters and format the code.
pre-commit
is executed on CI to verify that the code is formatted properly.
To run it locally, use:
pre-commit run --all-files
To set up pre-commit
so that it runs before each commit, use:
pre-commit install
Building the docs
To build the documentation, use:
cd docs
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
make html
How do I write my own module?
Please refer to the documentation.
Contributing
Contributions are welcome! We will appreciate both ideas for new Artemis modules (added as GitHub issues) as well as pull requests with new modules or code improvements.
However obvious it may seem we kindly remind you that by contributing to Artemis you agree that the BSD 3-Clause License shall apply to your input automatically, without the need for any additional declarations to be made.
Contributors
Huge thanks to the following people that contributed to Artemis development, especially the KN Cyber science club of Warsaw University of Technology that initiated the project!
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tbody> <tr> <td align="center" valign="top" width="14.28%"><a href="https://github.com/kazet"><img src="https://avatars.githubusercontent.com/u/1233067?v=4?s=100" width="100px;" alt="kazet"/><br /><sub><b>kazet</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=kazet" title="Code">π»</a> <a href="https://github.com/CERT-Polska/Artemis/commits?author=kazet" title="Documentation">π</a> <a href="#ideas-kazet" title="Ideas, Planning, & Feedback">π€</a> <a href="#infra-kazet" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="https://github.com/CERT-Polska/Artemis/pulls?q=is%3Apr+reviewed-by%3Akazet" title="Reviewed Pull Requests">π</a> <a href="#talk-kazet" title="Talks">π’</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/BonusPlay"><img src="https://avatars.githubusercontent.com/u/8405359?v=4?s=100" width="100px;" alt="Adam KliΕ"/><br /><sub><b>Adam KliΕ</b></sub></a><br /><a href="#question-BonusPlay" title="Answering Questions">π¬</a> <a href="https://github.com/CERT-Polska/Artemis/commits?author=BonusPlay" title="Code">π»</a> <a href="#ideas-BonusPlay" title="Ideas, Planning, & Feedback">π€</a> <a href="https://github.com/CERT-Polska/Artemis/pulls?q=is%3Apr+reviewed-by%3ABonusPlay" title="Reviewed Pull Requests">π</a> <a href="#talk-BonusPlay" title="Talks">π’</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/anna1492"><img src="https://avatars.githubusercontent.com/u/142449177?v=4?s=100" width="100px;" alt="anna1492"/><br /><sub><b>anna1492</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/issues?q=author%3Aanna1492" title="Bug reports">π</a> <a href="https://github.com/CERT-Polska/Artemis/commits?author=anna1492" title="Code">π»</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/ELOOLE"><img src="https://avatars.githubusercontent.com/u/75997374?v=4?s=100" width="100px;" alt="MichaΕ M."/><br /><sub><b>MichaΕ M.</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=ELOOLE" title="Code">π»</a> <a href="#ideas-ELOOLE" title="Ideas, Planning, & Feedback">π€</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/cyberamt"><img src="https://avatars.githubusercontent.com/u/154326307?v=4?s=100" width="100px;" alt="cyberamt"/><br /><sub><b>cyberamt</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=cyberamt" title="Code">π»</a> <a href="#ideas-cyberamt" title="Ideas, Planning, & Feedback">π€</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/martclau"><img src="https://avatars.githubusercontent.com/u/7753513?v=4?s=100" width="100px;" alt="martclau"/><br /><sub><b>martclau</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=martclau" title="Code">π»</a> <a href="#ideas-martclau" title="Ideas, Planning, & Feedback">π€</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/szymsid"><img src="https://avatars.githubusercontent.com/u/26324394?v=4?s=100" width="100px;" alt="szymsid"/><br /><sub><b>szymsid</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=szymsid" title="Code">π»</a> <a href="https://github.com/CERT-Polska/Artemis/pulls?q=is%3Apr+reviewed-by%3Aszymsid" title="Reviewed Pull Requests">π</a></td> </tr> <tr> <td align="center" valign="top" width="14.28%"><a href="https://github.com/bulkowy"><img src="https://avatars.githubusercontent.com/u/25008387?v=4?s=100" width="100px;" alt="bulek"/><br /><sub><b>bulek</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=bulkowy" title="Code">π»</a> <a href="https://github.com/CERT-Polska/Artemis/pulls?q=is%3Apr+reviewed-by%3Abulkowy" title="Reviewed Pull Requests">π</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/mimi89999"><img src="https://avatars.githubusercontent.com/u/8530546?v=4?s=100" width="100px;" alt="Michel Le Bihan"/><br /><sub><b>Michel Le Bihan</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=mimi89999" title="Code">π»</a></td> <td align="center" valign="top" width="14.28%"><a href="https://eliszewski.pl/"><img src="https://avatars.githubusercontent.com/u/565758?v=4?s=100" width="100px;" alt="Grzegorz Eliszewski"/><br /><sub><b>Grzegorz Eliszewski</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=es1o" title="Code">π»</a> <a href="#ideas-es1o" title="Ideas, Planning, & Feedback">π€</a> <a href="#platform-es1o" title="Packaging/porting to new platform">π¦</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/kshitijk4poor"><img src="https://avatars.githubusercontent.com/u/82637225?v=4?s=100" width="100px;" alt="kshitij kapoor"/><br /><sub><b>kshitij kapoor</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=kshitijk4poor" title="Code">π»</a> <a href="#ideas-kshitijk4poor" title="Ideas, Planning, & Feedback">π€</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/DelfinSR"><img src="https://avatars.githubusercontent.com/u/91948384?v=4?s=100" width="100px;" alt="Delfin"/><br /><sub><b>Delfin</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=DelfinSR" title="Code">π»</a></td> <td align="center" valign="top" width="14.28%"><a href="https://bornunique911.github.io/"><img src="https://avatars.githubusercontent.com/u/69379200?v=4?s=100" width="100px;" alt="Bornunique911"/><br /><sub><b>Bornunique911</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=Bornunique911" title="Code">π»</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/RasenRhino"><img src="https://avatars.githubusercontent.com/u/53192732?v=4?s=100" width="100px;" alt="Ridham Bhagat"/><br /><sub><b>Ridham Bhagat</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=RasenRhino" title="Code">π»</a></td> </tr> <tr> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Matie26"><img src="https://avatars.githubusercontent.com/u/56604997?v=4?s=100" width="100px;" alt="Mateusz Borkowski"/><br /><sub><b>Mateusz Borkowski</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=Matie26" title="Code">π»</a> <a href="#ideas-Matie26" title="Ideas, Planning, & Feedback">π€</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/jxdv"><img src="https://avatars.githubusercontent.com/u/138708600?v=4?s=100" width="100px;" alt="jxdv"/><br /><sub><b>jxdv</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=jxdv" title="Code">π»</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/michalkrzem"><img src="https://avatars.githubusercontent.com/u/24720262?v=4?s=100" width="100px;" alt="kvothe"/><br /><sub><b>kvothe</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=michalkrzem" title="Code">π»</a> <a href="#ideas-michalkrzem" title="Ideas, Planning, & Feedback">π€</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/lukigruszka"><img src="https://avatars.githubusercontent.com/u/10619075?v=4?s=100" width="100px;" alt="lukigruszka"/><br /><sub><b>lukigruszka</b></sub></a><br /><a href="https://github.com/CERT-Polska/Artemis/commits?author=lukigruszka" title="Code">π»</a></td> </tr> </tbody> </table> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END -->