Ports schließen



  • hi,

    Ich hab da mal 3 Fragen:

    1. Wie kann ich offene Ports schließen z.B. Port 135 ?
    (bitte code)

    2. Wie kann ich meine Ports abhöhren, habe schonmal hier im forum gelesen das das mit API Hooking möglich wäre, also wie am besten? (bitte code)

    3. Wie sind die richtigen Profi Firewalls aufgebaut (Funktionsweise)?

    Also schonmal danke im vorraus für die Antworten!

    cya



  • Also was das abhören angeht, hab ich das früher in VB immer mit nem Socket gemacht. Unter VB gibts dafür die WinSock, wie man ein Socket unter C/C++ erstellt weiß ich nicht. Allerdings kannst du damit angeben, auf welchem Port der lauschen soll und wenn Daten eintrudeln sagt er bescheid.
    Die Frage ist, welche Lösung schneller und flexibler ist.



    1. offenen port schließen geht nur in dem du die anwendung des ports zu machts

    2. geht nur teilweise, du kannst einen socket nochmal auf diesen port legen und die daten mithören, dies geht aber nicht bei system ports, weil sich dort das system die daten zuerst abhohlt und dann du erst bescheit kriegst dass daten da sind. bei anderen anwendung geht es nur wenn deine anwendung zuerst "dran" ist.

    3. die benutzen treiber (sachen wie WinPCAP) die tiefer im system arbeiten können wir z.b. der TCP/IP treiber, daher haben die mehr daten und auch mehr rechte über die daten.



  • Wie kann ich den sockets auf einen Port legen? Kann ich sockets nicht erst lesen wenn Connected wurde? Hat da vielleicht jemand in C ein Codebeispiel wie man abhören kann?



  • so..

    des legt den socket auf port 137, des wichtige ist dieses setsockopt - swa problem bei der sache ist, dass TCP ports glaub nicht gehn nur udp ports. die kommen ohne eine virtuelle verbindung aus
    ...aber des ganze bringt dir nicht viel, weil port 137 von windows benutz wird

    SOCKET s = socket( AF_INET, SOCK_STREAM, IPPROTO_UDP );
    if( s == SOCKET_ERROR )
    	{ /*ERROR*/ }
    
    BOOL bOn = true;
    if( setsockopt( s, SOL_SOCKET, SO_REUSEADDR, (char*)&bOn, sizeof( bOn ) ) == SOCKET_ERROR )
    	{ /*ERROR*/ }
    
    sockaddr_in addr		= { 0 };
    addr.sin_family			= AF_INET;
    addr.sin_addr.s_addr	= INADDR_ANY;	// Alle IPs
    addr.sin_port			= htons( 137 );	// Port 137
    if( bind( s, (sockaddr*)&addr, sizeof( addr ) ) == SOCKET_ERROR )
    	{ /*ERROR*/ }
    


  • hi,

    Wie kann das funktionieren? Die Firewalls benutzen Treiber(wie du sagtest), aber das System(der Dienst) greift doch trotzdem auf den Port zu, dann könnte eine Firewall auch nur mitlauschen, oder?



  • das system selber benutzt auch nur treiber. aber treiber können vor treiber geschaltet werden. der treiber arbeitet auf der ebene, die vor den protokoll treibern liegt (TCP/IP) etc. deshalb kann ne firewall z.b. TCP/IP packete blockieren in dem die diese nicht nach oben weiterreicht



  • So ich hab noch eine Frage, in welcher Datei sind die Treiber die die Firewalls benutzen und wie nennt man diesen treiber? THX



  • die meisten firewalls haben ihre eigenen treiber... wingate hat z.b. ne firewall und hat dafür nen extra treiber, winroute genauso... dateinamen weiss ich leider nicht, aber der bringt dir eh nicht wirklich was, wenn du nicht die spezifikationen der api hast.. (und die rücken die hersteller der programme sicher nicht raus...)

    da steht ein bissl was dazu, auch wenn auf englisch:

    http://www.ndis.com/papers/winpktfilter.htm

    und sonst würd ich mal weiter google fragen, vllt gibts ja auch beispiele oder so dafür, das artet aber in arbeit aus 🙂

    hab glatt noch was bessres gefunden:
    http://sudhirmangla.netfirms.com/personal/Firewall.htm

    (bsp. mit source!)


Anmelden zum Antworten