Fråga:
IP-förfalskning (teorier är bra)
rinchik
2013-02-21 03:46:27 UTC
view on stackexchange narkive permalink

Finns det något (praktiskt / teoretiskt) sätt att skapa "IP-adress"?

Med smidning menar jag mata till webbplatsen den IP du vill ha.

Låt oss ta PHP som exempel:

Du måste ändra din IP-adress till denna IP 225.225.225.225.

I slutresultatet $ _SERVER ['REMOTE_ADDR '] på min server kommer att innehålla IP 225.225.225.225. (global variabel $ _SERVER ['REMOTE_ADDR'] kommer att vara lika med 225.225.225.225).

Och bara i fallet: frågan handlar om IP-förfalskning INTE "vad som är proxy och hur man använder det".

UPPDATERING: Jag använde bara PHP som ett exempel. Om kommer att fortsätta med PHP bör naturligtvis HTTP_X_FORWARDED_FOR också innehålla 225.225.225.225 eller vara lika ingen ingenting :)

Du kan säkert * skicka * ett paket med en förfalskad IP-källa, men du kommer sannolikt inte att kunna få svaret.
Två svar:
Tom Leek
2013-02-21 04:30:32 UTC
view on stackexchange narkive permalink

Full IP-spoofing är svårt för allmänheten.

Allt i IP är tillverkat av paket. Varje paket har en källadress och en destinationsadress . IP-förfalskning handlar om att skicka paket med fel källadress. Att skicka ett sådant paket är tillräckligt enkelt med några rader kod (det tenderar att kräva lokala administratörs- / root-rättigheter; på Linux är det en fråga om ett -uttag () -systemsamtal med SOCK_RAW -parameter).

Att få paketet att nå sin destination kan vara lite problematiskt. Normalt hoppar paket från router till router och routrar tittar bara på destinationsadressen (de är intresserade av vart paketet ska gå, inte varifrån det kommer). En del routrar tillämpar dock anti-spoofing-mekanismer: routrarna "vet" vilka IP-adresser som ligger bakom det och kommer att se att det falska paketet inte är "möjligt" (dess källadress är inte en av de källadresser som normalt ligger bakom router). Sådana routrar reagerar genom att släppa det kränkande paketet. Vissa Internet-leverantörer använder sådana routrar, eftersom de inte vill ses som slapp Internet-leverantör som låter sina kunder bedriva nätverksmetoder av tvivelaktig moral och laglighet.

Förutsatt att din Internet-leverantör är slapp och låter de falska paketen passera , når du det andra problemet som kallas " TCP-sekvensnummer ". En webbserver förväntar sig inte ensamma paket utan en TCP-anslutning. TCP-anslutningen börjar med "trevägs handskakning":

  • Klienten skickar ett första paket som innehåller SYN-flaggan.
  • Servern svarar på det paketet med ett paket som innehåller SYN- och ACK-flagga.
  • Klienten svarar på det paketet med ett paket som innehåller ACK-flaggan.

Varje paket med SYN innehåller initialt sekvensnummer (ett 32-bitarsvärde) för dataströmmen som kommer från samma maskin. I själva verket kommer varje databit att "numreras" och räknaren börjar vid ett värde som avsändaren väljer. Dessa värden används i TCP-kontrollflödet; klient och server använder dem för att berätta för den andra maskinen vilka byte har tagits emot ("bekräfta"). I synnerhet MÅSTE det tredje paketet för trevägshandskakningen (ACK från klienten) MÅSTE innehålla sekvensnumret som servern skickade i sitt SYN + ACK-paket.

Men en falsk klient aldrig får det SYN + ACK-paketet. Servern skickar faktiskt sitt SYN + ACK till den påstådda klientadressen, som är källadressen i SYN-paketet. Per definition använde spoofing-klienten en falsk källadress. Så SYN + ACK gick till den där falska adressen, inte till klienten. Eftersom klienten inte har fått SYN + ACK har han inget sätt att gissa det sekvensnummer som servern lade in i SYN + ACK. Därför kan klienten inte skicka ett giltigt ACK. Servern kommer således aldrig att betrakta trevägshandskakningen som slutförd. Inget handslag, inga data. Inga data, ingen HTTP-begäran eller svar. Försöket att ansluta till en falsk källadress fungerar helt enkelt inte.

Det är svårt att gissa servernas sekvensnummer om servern använder en anständig slumptalsgenerator. TCP-sekvensförutsägelseattacket handlar om att först öppna några anslutningar till målservern för att få några nya "slumpmässiga" sekvensnummer. Därefter försöker angriparen räkna ut det interna tillståndet för Slumpgenerator som används av serverns operativsystem för att producera sekvensnumren. Om RNG är av kryptografisk kvalitet (som det borde vara i något anständigt operativsystem) är sådan förutsägelse inte möjlig, och angriparen måste förlita sig på tur. Eftersom sekvensnummer är över 32 bitar har angriparen en chans på cirka fyra miljarder för att få rätt. Det är inte bra odds för angriparen ...

För att kunna avsluta trevägs-handskakningen måste angriparen praktiskt taget "se" SYN + ACK-paketet, även om det skickas till den falska adressen. Detta kräver att angriparen är "nära" målservern, på samma LAN eller kanske en eller två routrar högst. Detta förklarar varför jag sa att full IP-spoofing är svårt för allmänheten : som en grundläggande ISP-kund har du inte den fysiska åtkomsten till kablarna som krävs för att göra en fullständig TCP-falska på en generisk webbserver . Naturligtvis kan anställda vid anläggningarna där servern är värd göra mycket fler saker ...

Och svaret? Även om du lyckas göra trevägs- handskakning och skickar HTTP-begäran, kommer servern att skicka HTTP -svaret till den falska adressen, inte till dig. Där igen behöver du omfattande trådnivååtkomst för att få svaret. Annars kan du i bästa fall skicka "blind" begäran men inte bevittna resultatet. Detta kan vara tillräckligt för en attack, eller inte, beroende på vad servern gör och varför du försöker kontakta den under en falsk adress.

Tack för det mycket detaljerade svaret :) virtual +1 jag kan inte göra upvotes ännu (:
Peleus
2013-02-21 05:57:58 UTC
view on stackexchange narkive permalink

Kortversion - Ja det är möjligt att få den att visas från en annan adress, det är tyvärr extremt svårt att få en fullständig session med en falsk IP dock.

Exempel - Jag skulle kunna göra någon och sätta en falsk IP-adress (din 225.225.225.225) i källadressen och så långt du ser blir du attackerad från den adressen (det finns sätt att spåra detta utanför ramen för frågan).

DoS är dock lätt eftersom jag inte bryr mig vad du säger tillbaka - jag försöker bara översvämma dig med paket. När jag faktiskt vill lyssna / interagera med dig måste du veta var du ska skicka tillbaka data. Om jag lägger falska data i källfältet kommer du att skicka returdata till den här adressen, vilket betyder att jag, oavsett vilken adress jag egentligen är, aldrig får det.



Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...