Giter Site home page Giter Site logo

reternal-quickstart's Introduction

RE:TERNAL


Drawing

version


Note: Still under development, only use for testing and do not expose interfaces! Current compose doesn't work yet, only try when you know what you're doing

RE:TERNAL is a centralised purple team orchestration service to manage third-party C2 frameworks. Agents are installed on endpoints to to execute various known red-teaming techniques in order to test blue-teaming capabilities. The simulations are mapped to the MITRE ATT&CK framework. This repo contains the compose file in order to set up the reternal platform via docker.

There is a public preview available running the latest version @ https://reternal.d3vzer0.com (Github login required). Executing/saving campaigns and interacting with the C2 modules is disabled (for obvious reasons ;)).

Reternal components

Component Description Code Build
API Administrative API to schedule tasks Python Build Status
UI VueJS-based UI buildscript and NGinx webserver VueJS Build Status
C2 Distributed tasks to interact with external C2 frameworks Python Build Status
Search Distributed tasks to execute search queries (ie. Splunk/Elasticsearch) for ATT&CK coverage rating Python Build Status
Mitre Repository containing already existing mapped techniques for reternal
Component Description Build
Total Stack Build verifying entire stack via docker-compose in this repository TODO

Install and Configuration

This repository contains Ansible deployment playbooks to automate the local or remote installation and configuration for Reternal. The guide can be found on the repo's Wiki @ https://github.com/d3vzer0/reternal-quickstart/wiki.

Developers and Contact

Joey Dreijer < [email protected] >
Yaleesa Borgman < [email protected] >

Whats up with the name?

This project has been re-developed so many times, it will probably never really finish. Hence RE (Redo) and Ternal (Eternal).

Special Thanks

Examples and screenshots

All of the features will be documented on the Welcome page of the Wiki @ https://github.com/d3vzer0/reternal-quickstart/wiki. Below are a few examples of the main components.

Actor / Technique mapping

Reternal automatically maps available commands and techniques to actors. You can directly add all the techniques commonly used by actors to your set of tasks. actor_mapping

Recipe / Graph builder

Scheduling tasks to be run on an agent is called a graph. You can add manual commands to a graph or select one of the existing mapped techniques or actor TTPs. You can drag/drop to change the order of the tasks in your graph.

campaign

C2 interaction

Reternal acts as a piece of middleware and interacts with external C2 frameworks. An example is shown below how Reternal manages external listeners and generates stagers. actor_mapping

actor_mapping

Coverage rating (based on Rabo DeTTECT)

Automatically synchronise the available datasources with your Splunk environment or add logsources manually. Reternal will suggest specific campaigns to execute based on your coverage rating.

actor_mapping

With an overview of your coverage compared to all the ATT&CK techniques: attck_archive

Integrated Hunts

Additionally a list of Splunk queries are included to automatically validate simulations. Soon (tm) the scheduled campaign will automatically run relevant queries and present a detailed report containing the findings (ie. time when attack was performed vs. time of detection etc)

attck_archive

Campaign state and dashboard

The main dashboard displays the state of your running campaigns and displays the expected coverage of your datasources vs techniques

attck_archive

reternal-quickstart's People

Contributors

d3vzer0 avatar olafhartong avatar yaleesa 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

reternal-quickstart's Issues

Linux 64bit ELF agent bug

Error while executing the agent payload.bin file for 64bit ELF.

panic: interface conversion: interface {} is nil, not []interface {}

goroutine 5 [running]:
main.StartPulse()
	/reternal-agent/agent/src/corebeacon.go:73 +0x27d
created by main.StartBeacon
	/reternal-agent/agent/src/corebeacon.go:65 +0x37

Consider creating an installation Guide not using Docker

Dear Sirs,

I t would be great to have a configuration guide that used a standalone server.

Happy to try and help out. Would the starting point be:-
Mongo db
Redis
Python 3.6
Python dependencies
Webserver for flask app and vue.js

Cheers

Agent errors (interface is nil)

image

agents errors on windows10x64 and windows7x64 OSs is same:
`panic: interface conversion: interface {} is nil, not []interface {}

goroutine 19 [running]:
main.StartPulse()
/reternal-agent/agent/src/corebeacon.go:73 +0x284
created by main.StartBeacon
/reternal-agent/agent/src/corebeacon.go:65 +0x3e`

Docker-compose SocketIo problem

Hello,

I would like to install Reternal from docker-compose file. The processus failed because of this error. Can you help me please ?

Thank you

api-socket_1     | Traceback (most recent call last):
api-socket_1     |   File "/usr/local/bin/celery", line 10, in <module>
api-socket_1     |     sys.exit(main())
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/__main__.py", line 16, in main
api-socket_1     |     _main()
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/bin/celery.py", line 322, in main
api-socket_1     |     cmd.execute_from_commandline(argv)
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/bin/celery.py", line 496, in execute_from_commandline
api-socket_1     |     super(CeleryCommand, self).execute_from_commandline(argv)))
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/bin/base.py", line 288, in execute_from_commandline
api-socket_1     |     argv = self.setup_app_from_commandline(argv)
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/bin/base.py", line 502, in setup_app_from_commandline
api-socket_1     |     self.app = self.find_app(app)
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/bin/base.py", line 524, in find_app
api-socket_1     |     return find_app(app, symbol_by_name=self.symbol_by_name)
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/app/utils.py", line 368, in find_app
api-socket_1     |     sym = symbol_by_name(app, imp=imp)
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/bin/base.py", line 527, in symbol_by_name
api-socket_1     |     return imports.symbol_by_name(name, imp=imp)
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/kombu/utils/imports.py", line 57, in symbol_by_name
api-socket_1     |     module = imp(module_name, package=package, **kwargs)
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/celery/utils/imports.py", line 111, in import_from_cwd
api-socket_1     |     return imp(module, package=package)
api-socket_1     |   File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
api-socket_1     |     return _bootstrap._gcd_import(name[level:], package, level)
api-socket_1     |   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
api-socket_1     |   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
api-socket_1     |   File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
api-socket_1     |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
api-socket_1     |   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
api-socket_1     |   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
api-socket_1     |   File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
api-socket_1     |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
api-socket_1     |   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
api-socket_1     |   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
api-socket_1     |   File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
api-socket_1     |   File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
api-socket_1     |   File "<frozen importlib._bootstrap_external>", line 678, in exec_module
api-socket_1     |   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
api-socket_1     |   File "/reternal-backend/app/__init__.py", line 7, in <module>
api-socket_1     |     from flask_socketio import SocketIO
api-socket_1     |   File "/usr/local/lib/python3.6/site-packages/flask_socketio/__init__.py", line 22, in <module>
api-socket_1     |     from socketio.exceptions import ConnectionRefusedError
api-socket_1     | ImportError: cannot import name 'ConnectionRefusedError'

Payloads failing to build

I've built RE:Ternal via manual docker method and set it up. It appears to be working except for when it comes to building the payload to install on endpoints. There are no console errors in the browser but I get the below when checking the status.
Failed builds

Missing Command in install instructions? Can't run ansible playbook

Is there an install command missing from this section at this link>
https://github.com/d3vzer0/reternal-quickstart/wiki/2.-Install---Configuration-Guide

  1. Running the Reternal Playbook
    The standalone.yml file is a role definition file that states what components should be configured/installed on your infrastructure. The role uses the secrets in the previously created vault file to secure the Reternal components. To run the deployment role, execute the following command and specify your vault and your sudo/su password:
    If you want to deploy on localhost in dev mode (only listens on localhost + debug mode):

SEEMS LIKE THERE WAS A COMMAND HERE<<
Running reternal locally for development does not require any changes to the existing config. If you have docker installed, simply run the below command to get the environment running:

ansible-playbook reternal.yml -i inventories/standalone/dev/hosts.ini --ask-vault-pass

As a result, I am trying to use development mode instead and am getting the following error message when attempting to run this command:

ansible-playbook reternal.yml -i inventories/standalone/dev/hosts.ini --ask-vault-pass

//Message:

pat@reternal:~/reternal-quickstart/ansible/inventories/standalone/dev/group_vars$ ansible-playbook reternal.yml -i ~/home/pat/reternal-quickstart/ansible/inventories/standalone/dev/hosts.ini --ask-vault-pass
Vault password:
[WARNING]: Unable to parse /home/pat/home/pat/reternal-
quickstart/ansible/inventories/standalone/dev/hosts.ini as an inventory source

[WARNING]: No inventory was parsed, only implicit localhost is available

[WARNING]: provided hosts list is empty, only localhost is available. Note
that the implicit localhost does not match 'all'

ERROR! playbooks must be a list of plays

The error appears to have been in '/home/pat/reternal-quickstart/ansible/inventories/standalone/dev/group_vars/reternal.yml': line 13, column 1, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

reternal:
^ here

//reternal.yml config:

reternal:
phase: developement
install_dir: "{{ lookup('env','HOME') }}/opt/reternal"
domain: "reternal.local"

Just a comment

Yeh,

This look Awesome!!!! Can't wait to have it release!!!

๐Ÿ‘ ๐Ÿฅ‡

Docker backend doesn't

Hello,

I can't login on the web interface as the backend isn't listening on port 5000

% docker-compose up -d --build
...
Step 21/21 : CMD celery -A tasks worker -Q agent --concurrency=1
 ---> Running in 42f971f59fc3
 ---> 990e899f9ed9
Removing intermediate container 42f971f59fc3
Successfully built 990e899f9ed9
Successfully tagged reternalquickstart_compiler:latest
Creating reternalquickstart_mongodb_1
Creating reternalquickstart_redis-service_1
Creating reternalquickstart_api-socket_1
Creating reternalquickstart_api_1
Creating reternalquickstart_c2_1
Creating reternalquickstart_compiler_1
Creating reternalquickstart_ui_1
% python3 manage.py -a install -t all

Web interface is up and running on http://localhost/ but the login request to http://127.0.0.1:5000/api/v1/login fails as no docker image is listening on port 5000:

% docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS              PORTS                        NAMES
fa004edb47de        reternalquickstart_ui         "nginx -g 'daemon ..."   About a minute ago   Up About a minute   127.0.0.1:80->80/tcp         reternalquickstart_ui_1
79eef14b2f9c        reternalquickstart_compiler   "/bin/sh -c 'celer..."   21 minutes ago       Up About a minute                                reternalquickstart_compiler_1
c5d767a6fefb        reternalquickstart_c2         "/bin/sh -c 'pytho..."   21 minutes ago       Up About a minute   127.0.0.1:9000->9000/tcp     reternalquickstart_c2_1
c1da8100cb9f        redis                         "docker-entrypoint..."   21 minutes ago       Up About a minute   127.0.0.1:6379->6379/tcp     reternalquickstart_redis-service_1
d777cef4f69a        mongo                         "/entrypoint.sh mo..."   21 minutes ago       Up About a minute   127.0.0.1:27017->27017/tcp   reternalquickstart_mongodb_1

% sudo ss -tlnp '( sport = 5000 or sport = 80 )'
State                      Recv-Q                      Send-Q                                            Local Address:Port                                           Peer Address:Port                     
LISTEN                     0                           128                                                   127.0.0.1:80                                                  0.0.0.0:*                         users:(("docker-proxy",pid=26106,fd=4))

Unable to login

[emulation/Frameworks/reternal-quickstart]$ docker-compose up -d --build                                                          *[development]
Starting reternal-quickstart_redis-service_1 ... done
Starting reternal-quickstart_mongodb_1       ... done
Starting reternal-quickstart_compiler_1      ... done
Starting reternal-quickstart_api-socket_1    ... done
Starting reternal-quickstart_c2_1            ... done
Starting reternal-quickstart_api_1           ... done
Starting reternal-quickstart_ui_1            ... done

[emulation/Frameworks/reternal-quickstart]$ python3 manage.py -a install -t all                                             *[development]
Username: admin
Password:
Role (User/Admin): Admin
{'result': 'created', 'message': 'Succesfully created user'}
{'result': 'success', 'message': 'Finished importing base commands'}
{'result': 'success', 'message': 'Finished loading Mitre techniques'}
emulation/Frameworks/reternal-quickstart/cli/imports/import_mapping.py:14: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
  yaml_object = yaml.load(yamlfile)
{'result': 'success', 'message': 'Finished loading mapped techniques'}
{'result': 'success', 'message': 'Finished importing all objects'}

[emulation/Frameworks/reternal-quickstart]$

"Succesfully created user" but a cant login, i have - "Unable to login"

Docker reternal-c2 not running

Hi,
I would like to understand why docker reternal-c2 stop running.
What's wrong with redis ?

There is a copy of command docker logs reternal-c2, then it's a copy of docker logs reternal-socketio.

Moreover, when I restart all containers, reternal-proxy crash .. don't know why...

Thank you !



During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 269, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 269, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 458, in wrapper
    resp = resource(*args, **kwargs)
  File "/reternal-c2/app/api_pulse.py", line 22, in decorated_function
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/flask/views.py", line 89, in view
    return self.dispatch_request(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 573, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/reternal-c2/app/api_pulse.py", line 42, in post
    result = get_tasks.get()
  File "/usr/local/lib/python3.6/site-packages/celery/result.py", line 226, in get
    on_message=on_message,
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 188, in wait_for_pending
    for _ in self._wait_for_pending(result, **kwargs):
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 255, in _wait_for_pending
    on_interval=on_interval):
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 56, in drain_events_until
    yield self.wait_for(p, wait, timeout=1)
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 65, in wait_for
    wait(timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/celery/backends/redis.py", line 127, in drain_events
    message = self._pubsub.get_message(timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 3283, in get_message
    response = self.parse_response(block=False, timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 3169, in parse_response
    if not block and not conn.can_read(timeout=timeout):
  File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 682, in can_read
    return self._parser.can_read(timeout)
  File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 295, in can_read
    return self._buffer and self._buffer.can_read(timeout)
  File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 205, in can_read
    raise_on_timeout=False)
  File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 200, in _read_from_socket
    sock.settimeout(self.socket_timeout)
OSError: [Errno 9] Bad file descriptor
172.31.0.8 - - [07/Aug/2019 13:05:19] "POST /api/v1/ping HTTP/1.1" 500 -
172.31.0.8 - - [07/Aug/2019 13:05:26] "POST /api/v1/ping HTTP/1.1" 404 -
172.31.0.8 - - [07/Aug/2019 13:05:26] "POST /api/v1/ping HTTP/1.1" 404 -
172.31.0.8 - - [07/Aug/2019 13:05:26] "POST /api/v1/ping HTTP/1.1" 404 -
172.31.0.8 - - [07/Aug/2019 13:05:27] "POST /api/v1/ping HTTP/1.1" 404 -
172.31.0.8 - - [07/Aug/2019 13:05:27] "POST /api/v1/ping HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 269, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 269, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 458, in wrapper
    resp = resource(*args, **kwargs)
  File "/reternal-c2/app/api_pulse.py", line 22, in decorated_function
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/flask/views.py", line 89, in view
    return self.dispatch_request(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 573, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/reternal-c2/app/api_pulse.py", line 42, in post
    result = get_tasks.get()
  File "/usr/local/lib/python3.6/site-packages/celery/result.py", line 226, in get
    on_message=on_message,
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 188, in wait_for_pending
    for _ in self._wait_for_pending(result, **kwargs):
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 255, in _wait_for_pending
    on_interval=on_interval):
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 56, in drain_events_until
    yield self.wait_for(p, wait, timeout=1)
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 65, in wait_for
    wait(timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/celery/backends/redis.py", line 127, in drain_events
    message = self._pubsub.get_message(timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 3283, in get_message
    response = self.parse_response(block=False, timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 3171, in parse_response
    response = self._execute(conn, conn.read_response)
  File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 3145, in _execute
    return command(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 687, in read_response
    response = self._parser.read_response()
  File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 298, in read_response
    response = self._buffer.readline()
AttributeError: 'NoneType' object has no attribute 'readline'
172.31.0.8 - - [07/Aug/2019 13:05:28] "POST /api/v1/ping HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 269, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 269, in error_router
    return original_handler(e)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.6/site-packages/flask/_compat.py", line 38, in reraise
    raise value.with_traceback(tb)
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 458, in wrapper
    resp = resource(*args, **kwargs)
  File "/reternal-c2/app/api_pulse.py", line 22, in decorated_function
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/flask/views.py", line 89, in view
    return self.dispatch_request(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/flask_restful/__init__.py", line 573, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/reternal-c2/app/api_pulse.py", line 42, in post
    result = get_tasks.get()
  File "/usr/local/lib/python3.6/site-packages/celery/result.py", line 226, in get
    on_message=on_message,
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 188, in wait_for_pending
    for _ in self._wait_for_pending(result, **kwargs):
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 255, in _wait_for_pending
    on_interval=on_interval):
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 56, in drain_events_until
    yield self.wait_for(p, wait, timeout=1)
  File "/usr/local/lib/python3.6/site-packages/celery/backends/asynchronous.py", line 65, in wait_for
    wait(timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/celery/backends/redis.py", line 127, in drain_events
    message = self._pubsub.get_message(timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 3283, in get_message
    response = self.parse_response(block=False, timeout=timeout)
  File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 3171, in parse_response
    response = self._execute(conn, conn.read_response)
  File "/usr/local/lib/python3.6/site-packages/redis/client.py", line 3145, in _execute
    return command(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 687, in read_response
    response = self._parser.read_response()
  File "/usr/local/lib/python3.6/site-packages/redis/connection.py", line 306, in read_response
    (str(byte), str(response)))
redis.exceptions.InvalidResponse: Protocol Error: 7, b''
172.31.0.8 - - [07/Aug/2019 13:05:28] "POST /api/v1/ping HTTP/1.1" 404 -
172.31.0.8 - - [07/Aug/2019 13:05:28] "POST /api/v1/ping HTTP/1.1" 404 -
172.31.0.8 - - [07/Aug/2019 13:05:30] "POST /api/v1/ping HTTP/1.1" 404 -

[2019-08-14 13:39:03,701: ERROR/ForkPoolWorker-1] Task api.result[79c8420d-1646-4338-86e4-275667ceb2f5] raised unexpected: AttributeError("'NoneType' object has no attribute 'decode'",)
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py", line 385, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py", line 648, in __protected_call__
    return self.run(*args, **kwargs)
  File "/reternal-backend/app/tasks/listener.py", line 11, in emit_result
    task_identity = rsession.get(task_key).decode('utf-8')
AttributeError: 'NoneType' object has no attribute 'decode'

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.