Herkese merhaba,
Birazda farklı konulara deyinelim istedim, bu konu altına birazdan yazacağım veya açıklayacağım gibi kendi yazdığını manuel ufak amaçlara hizmet eden araçları sizlerde paylaşabilirsiniz. Bakalım yetenekleriniz sizlere neleri yaptırdı.
Altta hackerlığın en önemli adımlarından birisi olan port scan (enumeration) bilgi toplamasına yönelik bir script paylaştım. Bu script linux socketlerini kullanarak port scan yapabilmektedir. Eğer bir sisteme sızdığınızda 3. taraf bir yazılım yükleme şansınız yok ve sunucu ağ içerisinde nasıl konumlanmış diye merak ediyorsanız artık pamuk eller klavyeye tabiri devreye girmekte ve aşağıdaki gibi bir script kodu ile işlerinizi kolaylıkla halledebilmektesiniz.
Bash ve python bu konuda size çok fazla esneklik sağlamaktadır. Sunucularda python olmayabilir ancak bu sizin kısır döngüde kalacağınız anlamına gelmiyor. Birçok yol var ve bunları zaman içerisinde sırasıyla paylaşmaya özen göstereceğim.
veya aşağıdaki python kodu gibi kendinize daha kapsamlı bir araç da geliştirebilirsiniz, bazı kısımları yazdım bazılarını sizlere yol göstermesi açısından size bıraktım. Copy-paste ve ezber mantığından çıkıp kendinizden bir şeyler katabilirsiniz işlerinize. Unutmayınki her geçen gün kendinize bir şey katmıyorsanız o gün yaptığınız kamyon dolusu işin bir anlamı yoktur. Kişisel gelişim böyle bir şeydir.
Birazda farklı konulara deyinelim istedim, bu konu altına birazdan yazacağım veya açıklayacağım gibi kendi yazdığını manuel ufak amaçlara hizmet eden araçları sizlerde paylaşabilirsiniz. Bakalım yetenekleriniz sizlere neleri yaptırdı.
Altta hackerlığın en önemli adımlarından birisi olan port scan (enumeration) bilgi toplamasına yönelik bir script paylaştım. Bu script linux socketlerini kullanarak port scan yapabilmektedir. Eğer bir sisteme sızdığınızda 3. taraf bir yazılım yükleme şansınız yok ve sunucu ağ içerisinde nasıl konumlanmış diye merak ediyorsanız artık pamuk eller klavyeye tabiri devreye girmekte ve aşağıdaki gibi bir script kodu ile işlerinizi kolaylıkla halledebilmektesiniz.
Bash ve python bu konuda size çok fazla esneklik sağlamaktadır. Sunucularda python olmayabilir ancak bu sizin kısır döngüde kalacağınız anlamına gelmiyor. Birçok yol var ve bunları zaman içerisinde sırasıyla paylaşmaya özen göstereceğim.
Bash:
#!/bin/bash
#hostlist alt alta iplerin olduğu bir txt dosyası olmalıdır
input="/tmp/hostlist"
while IFS= read -r host
do
echo "Taranan IP : $host" >> sonuc.txt
echo "$host için tarama başlatıldı."
port_first=1
port_last=65535
for ((port=$port_first; port<=$port_last; port++))
do
(echo >/dev/tcp/$host/$port) >/dev/null 2>&1 && echo "$port" >> sonuc.txt
done
echo "$host için Port taraması tamamlandı. Lütfen sonuç dosyasını kontrol ediniz..."
echo "=================================================================="
done < "$input"
echo "Tarama tamamlandı."
veya aşağıdaki python kodu gibi kendinize daha kapsamlı bir araç da geliştirebilirsiniz, bazı kısımları yazdım bazılarını sizlere yol göstermesi açısından size bıraktım. Copy-paste ve ezber mantığından çıkıp kendinizden bir şeyler katabilirsiniz işlerinize. Unutmayınki her geçen gün kendinize bir şey katmıyorsanız o gün yaptığınız kamyon dolusu işin bir anlamı yoktur. Kişisel gelişim böyle bir şeydir.
Python:
#!/usr/local/bin/python3
import ipaddress
from subprocess import Popen, PIPE
from IPy import IP
import logging
from scapy.layers.inet import ICMP, UDP, TCP
logging.getLogger("Scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
remoteServerIP = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3])
scanType = sys.argv[4]
tcpPorts = []
udpPorts = []
synPorts = []
icmpHost = []
def print_ports(port, state):
print("%s | %s" % (port, state))
class PortScan():
def TCP_Scan(remoteServerIP, start, end):
try:
for port in range(start, end):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = sock.connect_ex((remoteServerIP, port))
if result == 0:
# print("Port {}: Open".format(port))
tcpPorts.append(port)
except KeyboardInterrupt:
print("You pressed Ctrl+C")
sys.exit()
except socket.gaierror:
print("Host could not be resolved. Exiting")
sys.exit()
except socket.error:
print("Couldnt connect to server")
sys.exit()
print(*tcpPorts, sep=',')
print(tcpPorts)
sock.close()
def SYN_Scan(remoteServerIP, start,end):
sport = RandShort()
for port in range(start,end):
pkt = sr1(IP(dst=remoteServerIP) / TCP(sport=sport, dport=port, flags="S"), timeout=1, verbose=0)
if pkt != None:
if pkt.haslayer(TCP):
if pkt[TCP].flags == 18:
# print_ports(port, "Open")
synPorts.append(port)
print(*synPorts, sep=',')
# def UDP_Scan():
# TODO
class HostScan():
def ICMP_Scan(net_addr):
ip_net = ipaddress.ip_network(net_addr)
all_hosts = list(ip_net.hosts())
for i in range(len(all_hosts)):
state = Popen(['ping', '-c', '3', str(all_hosts[i])], stdout=PIPE)
output = state.communicate()[0]
hostalive = state.returncode
if hostalive == 0:
print(str(all_hosts[i]), "is up")
else:
print(str(all_hosts[i]), "is down")
# def TCP_Scan(net_addr):
#TODO
def main():
if scanType == "TCP":
PortScan.TCP_Scan(remoteServerIP, start, end)
if scanType == "UDP":
PortScan.UDP_Scan(remoteServerIP, start, end)
if scanType == "SYN":
PortScan.SYN_Scan(remoteServerIP, start, end)
if scanType == "ICMP":
net_addr = input("Enter a network address in CIDR format(ex.192.168.1.0/24): ")
HostScan.ICMP_Scan(net_addr)
if __name__ == '__main__':
main()