Commit Graph

24 Commits

Author SHA1 Message Date
daniel_sagi
9bb835edd3 added azure spn subscription hunting 2018-06-11 18:26:58 +03:00
daniel_sagi
838be65967 Added proves for vulnerabilities, added 'evidence' field for every vulnerability to be filled be provers(mostly ActiveHunters) 2018-06-11 18:01:54 +03:00
daniel_sagi
75393da91a simplified kubelet open handlers hunting and types 2018-06-11 14:26:09 +03:00
daniel_sagi
01c4aac105 Active hunting is now available by inheriting from ActiveHunter. the hunter wil subscribe only if the --active flag was set.
1. Removed scanning configuration from events, from now on, scanning config is accessed from the main module
2. Moved core types to a "toplevel" file
2018-06-11 12:39:11 +03:00
daniel_sagi
70ea40367b fixed bug: empty remote option 2018-06-10 20:10:26 +03:00
daniel_sagi
a2e37927bd changed directory tree of all modules and packages, for easing on future implementations and extensions 2018-06-10 20:09:09 +03:00
daniel_sagi
1934d21c99 changed metavar on remote flag 2018-06-10 19:48:34 +03:00
daniel_sagi
faa7571127 1. Added an --active flag, to allow optional "Proof" result, which will do an active hunting of a found vulnerability
2. Added a --remote flag to specify remote clusters/machines for hunting.
3. Improved a bit of the architecture, (Services)

Note:
The reporter module, will gather vulnerabilities before their active hunting will start.
This is not an issue, as we can access all of the attributes of the event directly from the active hunter (event.previous), which we will proccess on the end in the report
2018-06-10 19:34:12 +03:00
daniel_sagi
36e87807e6 1. completely transferred all event types to their corresponding module
2. started working on results table.
3. *added convention* from now on, every vulnerability/service event, should have a __doc__ that describes them. notice the new get_name(), component, and explain() attributes that needs to be implemented as well.
2018-06-10 16:43:05 +03:00
daniel_sagi
4a98d698a1 1. Added --pod flag to option "from pod" hunting. this will hunt the internal subnet of the cluster.
2. Added service account token and certificate handling, when running as a pod, to try and access resources that are "secured"
3. Added anonymous auth vulnerability detection
4. Changed requirements.txt for compatibility
2018-06-06 10:08:02 +03:00
daniel_sagi
9e8dfbc34e added hunting for open debug handlers on the kubelet 2018-05-28 19:37:30 +03:00
daniel_sagi
a465c3f2eb 1. Changed order of modules and pacakges in directories.
2. Changed method of hidden stacking of event, to send self as an argument, by inheriting from "Hunter" class. where the publish acts as a proxy to the handler.
3. Added new way of categorizing events, while added an option to subscribe to a father event. if en event gets publish, if its father event is hooked, the hook will be triggered
4. Added a reporter in log/ which listens to parent events, meanwhile Vulnerability and OpenService were added. all logging will be made from reporter from now on
2018-05-27 17:45:34 +03:00
daniel_sagi
69dba8f1c7 Merge branch 'KubeHunter2' 2018-05-24 16:06:00 +03:00
daniel_sagi
290f87de70 1. added log/
2. Started adding kubelet scanning.
3. Changed events architecture. All events are inheriting from "Event" class. when instantiating and defining a new event class, attributes other than what is important for that perticular event are not needed. the event handler will be stacking the events, so that each event will have all the attributes of its successors.
This proccess is invisible to the developer, but needs to be acknowledged.
*note: from now on, all executors needs to set self.event to given arg on init*
Example (pseudo):

@subscribe(NewHostEvent)
def PortScan(event):
		publish(OpenPortEvent(port="8080"))

@subscribe(OpenPortEvent)
def print(event):
		print(event.host)

publish(NewHostEvent(host="0.0.0.0"))
>> output: 0.0.0.0

the print function recieves an open port event. even though when publishing the OpenPortEvent we did not specify a host, the print function can access the "host" attribute, as the OpenPortEvent successor was NewHostEvent. if "host" was not defined on the succesors, it is "None"
2018-05-24 15:39:31 +03:00
daniel_sagi
672c59f576 Added events/ folder.
Added dynamic imports for all modules inside: 'events/',  'discovery/', 'hunting/' (you can now add new files with new implementations, and not worry about imports.)
Changed port timeout to be 1.5 seconds, more reliable results.
Changed default log level to INFO
2018-05-15 15:57:42 +03:00
daniel_sagi
3765196140 Changed events architecture, using class objects for all events
Added new subscription method for events, using a "subscribe" decorator.
Added an optional predicate function to events, for optional filtering on triggered time. used mainly for OpenPortEvent.
Added proper logging and argparse
Added cleanup of threads when exiting/finishing
2018-05-15 13:03:47 +03:00
daniel_sagi
c735b5df95 Started adding KubeProxy hunting, basic services detection mechanism was added.
The idea is discovering sub paths of resources in the api and sending them for hunting.

Added Dashboard detection from Proxy.
Also improved architecture of discovery/hunting from a "secure" perspective
2018-05-15 12:35:36 +03:00
daniel_sagi
beb50d40bc Added .gitignore file, ignoring .pyc files,
Also changed modules structure
2018-05-13 17:16:51 +03:00
daniel_sagi
48e1307f1d Added EventQueue class, to handle events.
Events now gets processed asynchronously.
2018-05-10 14:25:29 +03:00
daniel_sagi
6acf1beec8 changed function describe_service_type in services, to use a dictionary 2018-05-08 10:07:51 +03:00
Shir
eb6cbc2636 Initial Commit 2018-05-06 19:51:36 +03:00
Shir
cd880ec50e Delete everything of Kube Hunter 1.0 2018-05-06 19:50:00 +03:00
daniel_sagi
c8c8cd9ebd Fixed failed tries to scan unimplemented services
Added an empty url to dashboard hunter
Added chrome binary to automatically be install
2018-04-23 20:06:20 +03:00
Yehuda Chikvashvili
1a91ac63da initial commit 2018-03-26 17:25:30 +03:00