Coder Social home page Coder Social logo

raven's Introduction

Raven

[Currently is not being maintained]

Raven is a Linkedin information gathering tool that can be used by pentesters to gather information about an organization employees using Linkedin.

Disclaimer

Please do not use this program to do stupid things. 

The author does not keep any responsibility of any damage done by this program.

USE IT AT YOUR OWN RISK.

Installation

You can use the precompiled binary, but also you can compile from source.

You need to install chromedriver even if you use a precompiled binary or compiling from source.

Edit the credentials in the config.conf

[creds]
username=USERNAME
password=PASSWORD
[extra]
searchengine=google

Compiling on Linux

export GOPATH=/YOUR/GOPATH/HERE
cd $GOPATH/src/
git clone https://github.com/0x09AL/raven
go get github.com/chzyer/readline
go get github.com/gorilla/mux
go get github.com/mattn/go-sqlite3
go get github.com/olekukonko/tablewriter
go get gopkg.in/gcfg.v1
go get github.com/sclevine/agouti
go build raven

Installing chromedriver

wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv -f chromedriver /usr/bin/chromedriver
sudo chown root:root /usr/bin/chromedriver
sudo chmod 0755 /usr/bin/chromedriver

Releases

https://github.com/0x09AL/raven/releases

Dependencies

How it works

The main idea is that given a company name, searches all possible matches of Linkedin Employees in Google and then extracts their data. Based on that, it can build e-mail addresses in different formats, export them and also check them in haveibeenpwned.com.

The previous version of raven allowed you to extract data only after finishing a scan and only in a specified format. In case you wanted to extract the same info but with a different e-mail format , you needed to re-run the scan which wasn't very practical.

In this version it is possible that given a scan, you can export the data as many times as you want, in different formats and also check them in haveibeenpwned.com with only one command.

Scan

A Scan is the process of extracting the public information from Google and Linkedin and storing it in the database.

To create a scan you can run the command new scan this will bring you to the scan instance. There are some properties that should be configured before running a scan as can be seen below.

  • Scan_id - Can't be changed, is the scan id which is used as a PK in the database.
  • Scan_name - The name of the scan, used later when you want to export data.
  • Company - The name of the company that you want to extract employees.
  • Domain - This is the subdomain of the main LinkedIn website. If you want to target a specific country you can specify the subdomain. For example , Albania has the subdomain al. In case you don't know the subdomain use www.
  • Pages_number - The number of Google pages to extract information from.

Running the command options you can see the properties and values that are assigned.

Below is an example scan:

After setting the properties you can use start to start the scan. The scan will insert the data in the database so that you can use it later.

Export

After finishing the scan, you can use the data by running use (scan_name). To use this command you need to be on the main instance. For example if you finished a scan, you need to type back to return to the main instance. This will bring you to export instance. The export instance allows you to export the data in different formats and check them in haveibeenpwned.com .

The export instance has 3 properties.

  • Format - The format of the e-mails.
  • Domain - The domain to append to the "usernames".
  • Output - Filename to write the output.

Below are the avaible formats. You can use also the ALL in case you want to generate all the avaiable formats, and then use a custom tool to verify the e-mail addresses.

After specifying a format and a domain, you can export them using the export command or check if they have been breached by using the checkpwned command as can be seen below.

raven's People

Contributors

0x09al avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

raven's Issues

Error "src/raven/terminal/functions.go"

hi 0x09AL,
I got this error while trying to do a "go build" for raven.

raven/terminal

..\src\raven\terminal\functions.go:94:23: cannot use Scan (type "raven-go/model".Scan) as type "raven/model".Scan in argument to database.InsertScan
..\src\raven\terminal\functions.go:95:23: cannot use Scan (type "raven-go/model".Scan) as type "raven/model".Scan in argument to scraper.ExecuteScan
..\src\raven\terminal\functions.go:139:25: cannot use export (type "raven-go/model".Export) as type "raven/model".Export in argument to exporter.HandleExport
..\src\raven\terminal\functions.go:141:25: cannot use export (type "raven-go/model".Export) as type "raven/model".Export in argument to exporter.HandleExport

Do you have any ideas ?
Thank you for your time

[-] Error : list index out of range [-]

First, thank you for this useful tool. I installed it without problem and it seems to work fine except the following error. For every LinkedIn profile the tool find, I have a message "[-] Error : list index out of range [-]
" and the profile is not parsed.

I saw in another post that the problem may be resolved by cleaning cache and cookies in Firefox. I did it, but this didn't solve my problem. Any ideas?

TypeError: int() argument must be a string or a number, not 'NoneType'

Hi I've installed all the requirements that I need to run the tool but after the account has been identified I receiv the following error:

[+] Profiles Parsed 3 [+]
[+] Cleaning Invalid Data [+]
[+] Mail functions initialized [+]
Traceback (most recent call last):
File "raven.py", line 167, in
CompletedList.append(MailObject.generateEmails(domain,int(email_format),pers on))
TypeError: int() argument must be a string or a number, not 'NoneType'

Can someone help me to solve this error?
I run the tool on a Kali Linux 2018.1 but I tried to install the tool on a Ubuntu OS with the same error

Thank you

Google Bot Detection

Hi Again,

So i was using raven to gather some OSINT data today and set the -p option to 100, around page 30 or so of google it ran into googles bot detection asking for a capatcha/not a robot tick. Is there any way you could have raven either complete this or temporarily pause so it can be manually entered before restarting?

Disclosure of script in blog (Brazilian Portuguese)

First of all, congratulations to the script and to spread it in the community. It's fantastic!

I created a post, in Portuguese from Brazil, in my blog about your script (Raven). My intention is to spread knowledge and present to the Brazilian public its excellent tool. If at any time you can reference my post, I will be very happy!

When you have news on new tools and scripts, let me know!

Best regards,

No report

Hello, first of all nice tool, thanks
Second thing, i got this error when the tool ask me which format i want:

#> Enter format number: 1
╒════════╤════════════╤═══════════╤══════════╕
│ Name │ Position │ Company │ E-mail │
╞════════╪════════════╪═══════════╪══════════╡
╘════════╧════════════╧═══════════╧══════════╛
[+] Saving output to output/xxxxxxx.com-1504800726.csv
Traceback (most recent call last):
File "raven.py", line 184, in
RequesterObject.kill()
File "/home/doctorplague/raven/modules/requester.py", line 75, in kill
self.driver.quit()
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 181, in quit
RemoteWebDriver.quit(self)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 551, in quit
self.execute(Command.QUIT)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: quit

I check if Selenium (pip and python-selenium) are installed and upgraded and everything is fine... any suggestion?

LinkedIn Recruiter Account

Hi sorry to make an issue for this but i have a question about the tool.

Does it support recruiter accounts? As to me it seems the only limitation is that its based off my personal linkedin accounts network. Does it work even better with recruiter accounts?

error open raven with kali linux

root@:~/Destop/raven# python raven.py
Traceback (most recent call last):
File "raven.py", line 2, in
from modules import requester
File "/root/Destop/raven/modules/requester.py", line 1, in
from selenium import webdriver
ImportError: No module named selenium

Linkedin search

Hey! As discussed here some hints to integrate the Linkedin search in Raven. Pop me a message if unclear:

first get company id: https://www.linkedin.com/ta/company?query=<company_name>
parse json response: resultList->id (could be more than 1)

get list of employees: https://www.linkedin.com/search/results/people/?facetCurrentCompany=&page=0
parse json within one of the "code" html tag, I use if "VERTICAL" in <code[n]>: to identify if I'm parsing the right json structure (there's more than 1)

Obviously you need to go through all the returned pages nad perform multiple requests to search/results/people/ with page incremented.

from here you can get firsName, lastName, occupation and few other info, without visiting the victim's profile (stealthy).

Error while running

File "raven.py", line 80, in
RequesterObject = requester.Requester()
File "/Users/jtarrico/Desktop/raven/modules/requester.py", line 20, in init
display = Display(visible=0, size=(1600, 1024))
File "/Library/Python/2.7/site-packages/pyvirtualdisplay/display.py", line 34, in init
self._obj = self.display_class(
File "/Library/Python/2.7/site-packages/pyvirtualdisplay/display.py", line 52, in display_class
cls.check_installed()
File "/Library/Python/2.7/site-packages/pyvirtualdisplay/xvfb.py", line 38, in check_installed
ubuntu_package=PACKAGE).check_installed()
File "/Library/Python/2.7/site-packages/easyprocess/init.py", line 180, in check_installed
raise EasyProcessCheckInstalledError(self)
easyprocess.EasyProcessCheckInstalledError: cmd=['Xvfb', '-help']
OSError=[Errno 2] No such file or directory
Program install error!

OSX port

Hey nice tool,

Any chance of getting it ported so it works on osx?

I've installed geckodrive to /usr/local/bin instead of /usr/bin and installed with sudo but i get the following error:
Traceback (most recent call last): File "raven.py", line 56, in <module> RequesterObject = requester.Requester() File "/path/raven/modules/requester.py", line 22, in __init__ self.driver = webdriver.Firefox() File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 144, in __init__ self.service.start() File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 74, in start stdout=self.log_file, stderr=self.log_file) File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 390, in __init__ errread, errwrite) File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1024, in _execute_child raise child_exception OSError: [Errno 8] Exec format error

Edit: Also not working on Kali:
root@kali:/Desktop/raven# python raven.py -c 'company' -s US -d company.com
Traceback (most recent call last):
File "raven.py", line 2, in
from modules import requester
File "/root/Desktop/raven/modules/requester.py", line 1, in
from selenium import webdriver
ImportError: No module named selenium
root@kali:~/Desktop/raven# pip install selenium

Collecting selenium
Could not find a version that satisfies the requirement selenium (from versions: )
No matching distribution found for selenium

Mac OS support?

I noticed that the biggest thing blocking it from MacOS support is geckodriver. Is there a workaround?

No Results

Because google changed the way it displays links , raven failed to extract URL of Linkedin profiles. I fixed this bug, but I still haven't update the releases. Please compile from source until I find some time to update the releases.

ASCII encoding issues

The application does not manage properly the ASCII encoding. When the "Web page" title differs from English, the entire application blows up!

img_raven

Failed Login

Hi,

Great tool but I am having some difficulty with the linkedin authentication I keep getting a Login Failed message, I have updated firefox and reinstalled the tool, I have confirmed the creds and they work fine from a browser session. Looking in the Geko driver log I can see the following

1505893712514 Marionette DEBUG Received DOM event "DOMContentLoaded" for "https://www.linkedin.com/uas/login"
1505893712547 Marionette DEBUG Received observer notification "outer-window-destroyed" for "2147483655"
1505893712680 Marionette DEBUG Received DOM event "DOMContentLoaded" for "https://www.linkedin.com/uas/login"
1505893712682 Marionette DEBUG Received DOM event "pageshow" for "https://www.linkedin.com/uas/login"
1505893712701 Marionette DEBUG Received DOM event "pageshow" for "https://www.linkedin.com/uas/login"
1505893713397 Marionette DEBUG Received DOM event "beforeunload" for "https://www.linkedin.com/uas/login"
1505893714406 Marionette DEBUG Received DOM event "pagehide" for "https://www.linkedin.com/uas/login"
1505893714411 Marionette DEBUG Received DOM event "unload" for "https://www.linkedin.com/uas/login"


A coding exception was thrown and uncaught in a Task.

Full message: TypeError: NetworkError when attempting to fetch resource.
Full stack:


1505893714845 Marionette DEBUG Received observer notification "outer-window-destroyed" for "2147483658"
1505893714845 Marionette DEBUG Received observer notification "outer-window-destroyed" for "2147483660"
1505893716757 Marionette DEBUG Received DOM event "DOMContentLoaded" for "https://www.linkedin.com/nhome/?trk="

Thank you

J

Handling utf8

Traceback (most recent call last):
  File "raven.py", line 79, in <module>
    RequesterObject.doLogin(linkedinUsername,linkedinPassword)
  File "/private/tmp/raven/modules/requester.py", line 31, in doLogin
    if(str(self.driver.title).startswith("Sign In")):
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe0' in position 15: ordinal not in range(128)

Yes, python strings with utf8 are painful.

Feature Request - Pass linkedin username and password as parameters

Hi, finally got the tool working on OSX, its really good!

I had a suggestion though, please could you make it so it's possible to provide the username and password as parameters from the command line so that we don't have to leave our password sitting in a file on disk or scrub it whenever we finish using raven?

Get the following error, I have ensured selenium is installed

[+] Saving output to output/test.com.csv
Traceback (most recent call last):
File "raven.py", line 180, in
RequesterObject.kill()
File "/opt/raven/modules/requester.py", line 77, in kill
self.driver.quit()
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 199, in quit
RemoteWebDriver.quit(self)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 691, in quit
self.execute(Command.QUIT)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 314, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.