En titt på kompilering i C

Detta är en liten kortare beskrivning av kompileringsprocessen i C.

* Förbearbetning – I det här steget så byts alla direktiv för preprocessorn ut som är angivna i källkodsfilen (.c) mot den kod som finns i dom aktuella filerna. Som exempel så ersätter den kod från dom filer som angetts i #include-direktivet. En fil skapas som är i textformat och den får filändelsen .i.

* Översättning – I det här steget så översätter kompilatorn högnivåinstruktionerna i filen .i till lågnivåinstruktioner i form av Assembly. En ny fil skapas som är i textformat och den får filändelsen .s.

* Assemblering – Assemblern översätter textinstruktionerna från filen .s till maskinkod. Filen är i binärt format och den får filändelsen .o

* Länkning – Länkaren kombinerar en eller flera binära objektfiler (.o) och genererar en körbar fil. Den fil som skapas är i binärt format. I windows har den filändelsen .exe.

Egentligen så handlar kompileringen om dom första tre stegen. Den arbetar med en källkodsfil och genererar en objektfil. I den här processen så kollas sånt som syntaxfel, som missade semikolon etc. Saknas detta så rapporterar kompilatorn detta och avbryter kompileringen.

Länkaren arbetar med flera objektfiler och genererar en körbar fil. Om länkaren t.ex. hittar en funktion med samma namn i flera filer så kommer den att rapportera ett fel och den körbara filen skapas inte.

Normalt under processen så skapas temporära filer som sen automatiskt tas bort. Man kan tala om för kompilatorn att man vill behålla dessa med -save-temps.

1
gcc fil.c -save-temps -o fil

Rensa /boot

När jag installerade Lubuntu så valde jag att använda LVM. Detta betydde att det skapades en separat partition för /boot. Denna partition är inte så stor av någon anledning och efter att kärnan uppdaterats så blir denna partition full. Och då går det inte att uppdatera systemet alls förrän detta är fixat.

Jag använder mig av ett manuellt sätt att fixa detta på, med hjälp av kommandot:

sudo apt-get autoremove --purge

Det fungerar bra för mig. Dock så finns det andra sätt att hantera detta på och för Ubuntudistributioner så finns följande information (på engelska): https://help.ubuntu.com/community/RemoveOldKernels


Fusklapp Hacking

Kom över den här artikeln då PenTest Magazine delade en länk till den på Facebook. Den är så pass intressant att jag valde att översätta delar av den till svenska. Jag har inte fokuserat nåt på inledningstexten utan kör med tipsen som finns i artikeln. Länk till orginalartikeln hittar du i slutet av detta inlägg.

Xeushack går igenom dom saker som man bör veta både när det gäller offensiv och defensiv hacking. Och ens verktygslåda är både ens vapen och ens sköld. Nedan kommer några kategorier som är tänkbara samt tips på programvara (dom program som Xeushack tipsar om):

  • Program för att knäcka lösenord (ophcrack, Proactive Password Auditor)
  • Nätverksskanners (Nmap, NetScanTools)
  • Skanners för sårbarheter i nätverk (Languard, Nexpose)
  • Analysera nätverk (Cain & Abel, Commview)
  • Analysera trådlösa nätverk (Aircrack-ng, Commview for Wifi)
  • Filsökningsprogram (FileLocator)
  • Söka efter sårbarheter i webbapplikationer (Acunetix Web Vulnerability)
  • Säkerhetsskanners för databaser (SQLPing3)
  • Programvara för sårbarheter (Metasploit)

Vanliga attackvektorer

Det finns lite olika sätt som hackers och penetrationstestare väljer att arbeta, men det skall vara olika smaker för samma processer. Här är saker som man kan tänka på:

  • Människor blir lata och väljer svaga lösenord.
  • Människor blir irriterade och stänger ner påminnelser om uppdateringar, som gör att dom utsätter sig själva för sårbarheter.
  • Människor förväntar sig inte att det skall hända dom, det händer bara andra.
  • Människor som är lättlurade och som litar på det mesta.
  • Osäkra byggnader och ingångar till datasalar.
  • Dokument som inte har förstörts innan dom slängts i papperskorgen.
  • Lagringsutrymme som hårddiskar och usbminnen som inte har rensats ordentligt från information.
  • Nätverk utan brandväggsskydd.
  • Inga system som håller koll på intrångsförsök.
  • Standardlösenord (t.ex. på routrar där man använder fabrikslösenordet).
  • Dåliga, felaktiga eller saknade filer och kontroll över delningsåtkomst.
  • Opatchade system som kan utnyttjas för diverse sårbarheter. (T.ex. med Metasploit).
  • Onlineportaler med svara inloggningssystem.
  • Otillräckliga eller gamla metoder för att lagra lösenord (t.ex. MD5 hash).
  • Osäkra routrar.
  • Trådlösa nätverk som är öppna för gäster och som ansluter in i företagets nätverk.
  • Anställdas hårdvara som saknar full kryptering på hårddiskar.
  • Mobila enheter med för lite eller inget skydd.
  • Svaga eller inga lösenord för applikationer, databaser och operativsystem.

Vanligt hackade portar

  • TCP port 21 — FTP (File Transfer Protocol)
  • TCP port 22 — SSH (Secure Shell)
  • TCP port 23 — Telnet
  • TCP port 25 — SMTP (Simple Mail Transfer Protocol)
  • TCP and UDP port 53 — DNS (Domain Name System)
  • TCP port 443 — HTTP (Hypertext Transport Protocol) and HTTPS (HTTP over SSL)
  • TCP port 110 — POP3 (Post Office Protocol version 3)
  • TCP and UDP port 135 — Windows RPC
  • TCP and UDP ports 137–139 — Windows NetBIOS over TCP/IP
  • TCP port 1433 and UDP port 1434 — Microsoft SQL Server
  • Undvik att använda standardportar när det är möjligt
  • Servern bör flagga och blockera försök för bulkportskanning. En godkänt användare kommer nästan aldrig pinga varenda port under en session. Det är inte nog för att förhindra en attack. En hacker kan skanna portar i slumpvald ordning och från olika IP-adresser. Men det gör i alla fall att man blir varnad och att man är förberedd.
  • Alla portar förutom 80 och 443 bör kräva säker inloggning för att tillåta anslutning.

Generella tips

För hackers:

  • Ha klara mål och utveckla en plan innan du startar.
  • Har du tillåtelse att göra det du tänkt? Tillåtelse är den enda skillnaden mellan att vara laglig eller olaglig.
  • Känn till dom rätta verktygen som behövs för varje uppgift.
  • Var medveten om att det inte är möjligt att hitta varenda sårbarhet på varenda system. Det är här det är bra att ha en plan.
  • Ignorera inte icke-tekniska säkerhetshot. Dom används ofta först, som t.ex. social ingenjörskonst eller att gå in i ett icke övervakat serverrum.
  • Hantera andras information på samma sätt som du hanterar din egna information.

För säkerhetsanalytiker:

  • Om du testar säkerheten för en klient, se till att det du gör inte stör deras arbete.
  • Var medveten om att attacker kan komma både inifrån och utifrån.
  • Håll nyckelpersonerna uppdaterade under testprocessen.
  • Rapportera sårbarheter så fort som möjligt.
  • Studera beteenden och taktik för dom på insidan, för ondsinta hackers och black hats. Ju mer du vet om hur dom arbetar desto bättre blir du att testa system för sårbarheter.
  • Se till att vara ärlig med all din testning.
  • Hantera inte sårbarheter som du hittar på samma sätt. Inte alla svagheter är dåliga. Undersök ordentligt innan du rapporterar nåt som ett stort hot.
  • Visa att säkerhetstestning är bra för verksamheten och att du är rätt person för jobbet.

(Detta är en översättning av en artikel som du kan hitta i sin helhet här (på engelska): http://xeushack.com/the-ultimate-hacking-cheat-sheet)