12 KiB
Darknet Lantern Project (WIP)
TODOLIST: 95% completed
# Main features:
DONE:
-py : option 6) Trust/Untrust/Blacklist a webring participant
-php : make a search engine prompt that only accepts [a-zA-Z.://], it must refuse every other character
-py : fix uptimecheck.py to match the new csv format
-php : if valid make it filter your own verified.csv and unverified.csv files
-py : option 9) cleanup all duplicates in your own unverified.csv and verified.csv
-py : option 10) perform sanity checks on all csv files (to mark them as sensitive or remove the ones that are blacklisted)
-py : option 7) Add/Remove words in the sensitive list
-py : option 8) Add/Remove words in the blacklist
-manual work: fit all the existing links into the current format one by one
-php/css: make the search page preety
TODO:
-doc: redo the documentation for the project
-doc: finish the blogpost about it
-release it officially
What is the Darknet Lantern Project ?
Darknet Lantern is a minimalistic Peer to Peer Decentralised Search Engine for the Darknet.
Why is the Darknet Lantern relevant ?
The Darknet is fundamentally different compared to the Clearnet. Where the Clearnet is like an open city where every destination is visible from the sky, where every website is indexable and searchable using popular search engines, the Darknet is like an immense, dense dark forest where you can't see any destination from the sky.
To explore the Darknet, we need peers (like you and me) to maintain their own lists of onion links for each other, to be able to know where to go, as search engines can't automatically crawl onion websites like they do on the clearnet. The Darknet Lantern Project is a serious attempt at solving the fundamental lack of search engines on the Darknet by organising the manual peer-based work of discovering hidden services in the most efficient way, to make sure Hidden Websites can get visibility while maintaining their anonymity.
Why is the Darknet Lantern Webring relevant ?
The Darknet Lantern Project includes a Webring, as otherwise the Darknet Lanterns would remain scattered and remain hidden from each other, to participate in the webring is to exponentially increase the visibility of the Onion websites you listed, the more webring participants there are.
The more people join the Darknet Lantern Webring, the more visibility Darknet websites will be able to have over time, just like how it would be on the clearnet, while keeping the decentralisation and censorship-resistance intact. All you need is to run your own Darknet Lantern instance, and to join the Webring as a new participant.
How can I setup my own Darknet Lantern ?
We'll first cover how you can run your own Darknet Lantern instance, In short you'll need the latest debian (which is debian 12 currently), Tor, php8.2-fpm, python and a few python libraries that you'll install via the apt package manager.
How to join the Darknet Lantern Webring ? (TODO)
As detailed above, this project aims to gain traction over time as more and more people join the webring, so that a decentralized, peer to peer, anonymous search engine can be formed accross multiple communities.
- git clone the repository in your directory of choice:
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install tor git torsocks -y
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ torsocks git clone http://git.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/nihilist/darknet-lantern /srv/darknet-lantern
- Install nginx and php8.2-fpm
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install php8.2-fpm nginx -y
- use the nginx.conf and drop it in /etc/nginx/sites-available/
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ ls
nginx.conf README.md scripts todo.txt torrc www
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ cp nginx.conf /etc/nginx/sites-available/uptime.conf
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ vim /etc/nginx/sites-available/uptime.conf
-
use mkp244o if you want to have a custom vanity v3 hidden service domain name
-
use the torrc config to have a local socks5 port (as it will be used by the python script to check the uptime of the listed onion links)
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ vim /etc/tor/torrc
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ cat /etc/tor/torrc
HiddenServiceDir /var/lib/tor/onions/nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion/
HiddenServicePort 80 127.0.0.1:4443
SocksPort 127.0.0.1:9050
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ systemctl restart tor@default
- enable the nginx config and validate that it can be accessed on Tor
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ ln -s /etc/nginx/sites-available/uptime.conf /etc/nginx/sites-enabled/
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ nginx -s reload
6) install the python script dependencies:
```sh
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ apt install python3-pandas python3-requests python3-socks
- test if the uptimechecker python script works, it should output the following:
[ Wonderland ] [ /dev/pts/24 ] [/srv/darknet-lantern]
→ python3 scripts/uptimechecker.py
[+] ONION UPTIME CHECKER
[+] Reading the CSV File: /srv/darknet-lantern/www/links/webring.csv
[+] Checking if each .onion link is reachable:
[+] Editing the uptime score
0
[+] http://uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion 200
http://uptime.nowherejezfoltodf4jiyl6r56jnzintap5vyjlia7fkirfsnfizflqd.onion ✔️
[+] Reading the CSV File: /srv/darknet-lantern/www/links/Exchanges.csv
[+] Checking if each .onion link is reachable:
[+] Editing the uptime score
0
http://exchanger.infinityjs5qob5euyao745kp5x2hh4xquh7qs5cze3kcxv63xdwxlad.onion/ ❌
[+] Editing the uptime score
1
[+] http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion/ 200
http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion/ ✔️
[+] Editing the uptime score
2
- make sure the cronjob for scripts/uptimechecker.py is running at least once every 3 hours so that the csv files are automatically kept up to date.
[ Wonderland ] [ /dev/pts/23 ] [/srv/darknet-lantern]
→ crontab -e
*/3 0 * * * python3 /srv/darknet-lantern/scripts/uptimechecker.py
What is the default trust model ?
When spinning up your own Darknet Lantern instance, you are automatically creating your instance folder in www/participants/yourinstancehostname.onion/ and in there you'll find a copy of the blank verified.csv, unverified.csv, and webring-participants.csv files, along with the default banner.png file.
By default, as they are in the templates/ directory, the verified.csv and unverified.csv files are empty as you shouldn't trust random links that other people are trusting, you should verify them yourself one by one, to make sure that they aren't malicious.
That is why by default, when you first setup your own lantern instance, you are not listing anything, nor trusting any links, nor trusting any webring participants. This is a safety measure by default to avoid vector of abuse.
What is the lifecycle of a Lantern instance ?
At first, you have an empty Lantern, no links listed, no links trusted, no webring participants trusted either.
If you want to go your own way to explore the darknet yourself, you can start to list links yourself, into the unverified.csv file, and later on once you browse them enough to verify their authenticity, you may choose to trust them, to move them from unverified.csv to verified.csv
If you want to avoid doing the same work that other webring participants may have already done, you may choose to synchronize with their lists of links, and to add the ones that you didn't list yet into your own unverified.csv file. That way you'll be able to start exploring the Darknet starting from where others's progress.
After a while of adding new links and verifying them, you may choose to trust another webring participant's list of links, to automatically add their verified links into your own verified.csv file. However be warned that this is risky due to the fact that you may inadvertently trust malicious links.
What if there are malicious Lantern Instances ?
As stated above, it is possible that there will be malicious Lantern instances, meaning that you may have malicious peers that start to list some extremely illegal websites into their verified.csv file. This is why by default you are not trusting any Lantern webring participant, nor any links.
This is also the reason why there is a blacklist.csv file. That way, if there are any malicious keywords or links to be found, they will be immediately deleted. I for instance, refuse to list any porn sites and i encourage you to do the same, as those can link to some extremely illegal content, that you definitely don't want to get associated with.
Using the blacklist.csv file you can list blacklisted words or links that will automatically be removed if encountered by the python scripts.
When should I mark websites as sensitive ?
In order to avoid putting all eggs in one basket, i recommend marking websites that are related to Drugs (as this is the most popular sensitive darknet topic) as sensitive whenever you add them into your unverified.csv file.
There is also a sensitive.csv file in your instance directory to list those keywords, so that they get automatically marked as sensitive by the python scripts.
How can I add more links ?
Use the scripts/darknet_exploration.py to do the following:
How can I verify links ?
How can I edit the wordlists ?
OLD (for archival purposes)
2) As you keep on exploring the darknet, make sure you list the new onion links you find in the CSV files that are in www/links/, (i like to keep them separated in categories, so that they can be displayed in groups in the php pages afterward.)
<u>Option A:</u>
3) If you want to contribute your findings to the master repository that i'm running, just [ping me directly on simplex](https://simplex.chat/contact#/?v=2-5&smp=smp%3A%2F%2F1OwYGt-yqOfe2IyVHhxz3ohqo3aCCMjtB-8wn4X_aoY%3D%40smp11.simplex.im%2FsM96T2YMg4As7FiVoUVEttBgZQVPxWnb%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAsKONXcyHAFEd79i13QZf8vDRUU5dVgQKQqUy_0S7ay4%253D%26srv%3D6ioorbm6i3yxmuoezrhjk6f6qgkc4syabh7m3so74xunb5nzr4pwgfqd.onion) so that i can create you a gitea account first
4) Then create a pull request so that i can add your own links (AND the link to your list of links too in the index.php page) to the git repo directly. (**Please make sure you are keeping the sensitive websites in the same page, so the risk-based separation is kept (non-sensitive websites / sensitive websites))**
<u>Option B:</u>
3) If you want to go your own way just let us know that you're running your own list of onion links in the [Darknet Exploration SimpleX Chatroom](https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FL5jrGV2L_Bb20Oj0aE4Gn-m5AHet9XdpYDotiqpcpGc%3D%40nowhere.moe%2FDkWtBNDdIPVjaap5trLwtmBBEUjyqxSZ%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAcQLIsWEJ0xCv9sMSYVQV_sfMTkK_pisAtN55jgH08T8%253D%26srv%3Dt3srl5etd5y7nfvamlkdsjmm2okfu7db2jp4crxvf3tkwo42odme3kid.onion&data=%7B%22groupLinkId%22%3A%22iK4_U76rW6AdmZZfgVDDVQ%3D%3D%22%7D) so that we can add the link to your list of links in our own.
4) make sure you spread awareness of the darknet onion webring on darknet forums (there's [dread](http://g66ol3eb5ujdckzqqfmjsbpdjufmjd5nsgdipvxmsh7rckzlhywlzlqd.onion/) for example)
## How to run your own Darknet Onion Webring instance ?