Как подключиться к удаленному сканеру OpenVas с помощью python? - PullRequest
0 голосов
/ 17 апреля 2019

Я изучаю инструмент OpenVas для требования проекта, openVas в настоящее время управляется Greenbone. Я получаю сообщение об ошибке при попытке использовать удаленный сканер с использованием Python API.

Я сделал всю начальную настройку, настроил необходимую учетную запись графического интерфейса пользователя и т. Д. И смог сканировать необходимые системы вручную, однако, когда я пытаюсь сделать то же самое с помощью Python Api, он не работает. В Интернете нет ни одного примера, доступного для проверки моего кода. Я использовал [https://pypi.org/project/python-gvm/] API.

Я написал простой код, но он не работает ..

from gvm.connections import SSHConnection
from gvm.protocols.latest import Gmp
from gvm.transforms import EtreeTransform
from gvm.xml import pretty_print

connection = SSHConnection(hostname='192.168.1.84',username='alex',password='alex@123')
gmp = Gmp(connection)
gmp.authenticate('admin', 'admin')

# Retrieve current GMP version
version = gmp.get_version()

# Prints the XML in beautiful form
pretty_print(version)

Я получаю ошибку-

/usr/bin/python3.7 /home/punshi/PycharmProjects/nessus_api/openvas-greenbone.py
/usr/local/lib/python3.7/dist-packages/paramiko/kex_ecdh_nist.py:39: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  m.add_string(self.Q_C.public_numbers().encode_point())
/usr/local/lib/python3.7/dist-packages/paramiko/kex_ecdh_nist.py:96: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
  self.curve, Q_S_bytes
/usr/local/lib/python3.7/dist-packages/paramiko/kex_ecdh_nist.py:111: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  hm.add_string(self.Q_C.public_numbers().encode_point())
Traceback (most recent call last):
  File "/home/punshi/PycharmProjects/nessus_api/openvas-greenbone.py", line 8, in <module>
    gmp.authenticate('admin', 'admin')
  File "/usr/local/lib/python3.7/dist-packages/gvm/protocols/gmpv7.py", line 211, in authenticate
    response = self._read()
  File "/usr/local/lib/python3.7/dist-packages/gvm/protocols/base.py", line 54, in _read
    return self._connection.read()
  File "/usr/local/lib/python3.7/dist-packages/gvm/connections.py", line 126, in read
    raise GvmError('Remote closed the connection')
gvm.errors.GvmError: Remote closed the connection

Process finished with exit code 1

Я тестировал SSH-соединение вручную, поэтому проблема связана с моим кодом или каким-либо другим.

Дополнительная информация-

Ubuntu 16,
Greenbone Security Assistant 7.0.3 (gui)
Open Vas - 9.0.3

Ответы [ 2 ]

3 голосов
/ 02 мая 2019

У меня точно такая же проблема, что я решил ее с TLSConnection вместо SSHConnection. Вот ваш код:

import gvm
from gvm.protocols.latest import Gmp
from gvm.transforms import EtreeTransform
from gvm.xml import pretty_print

connection =gvm.connections.TLSConnection(hostname='192.168.1.84')
gmp = Gmp(connection)
gmp.authenticate('admin', 'admin')

# Retrieve current GMP version
version = gmp.get_version()

# Prints the XML in beautiful form
pretty_print(version)
0 голосов
/ 16 мая 2019

Я изучаю инструмент OpenVas для требований проекта, openVas в настоящее время управляется Greenbone.

Просто примечание.OpenVAS разрабатывается Greenbone уже много лет.Поэтому мы переименовали проект в Управление уязвимостями Greenbone (GVM) с версией 10. Только фактический компонент сканера будет по-прежнему назван в честь OpenVAS.См. https://community.greenbone.net/t/is-openvas-manager-and-gvmd-the-same/1777/3 для получения дополнительной информации.

Использование SSHConnection требует дополнительной настройки на удаленном сервере.Использование TLSConnection может быть проще, но также требует изменений в настройках gvmd / openvasmd, потому что по умолчанию он только прослушивает сокет unix.

...