hacktricks/crypto-and-stego/certificates.md

12 KiB

Certificates

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}


Use Trickest to easily build and automate workflows powered by the world's most advanced community tools.
Get Access Today:

{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}

What is a Certificate

Cheti cha ufunguo wa umma ni kitambulisho cha dijitali kinachotumika katika cryptography kuthibitisha kwamba mtu anamiliki ufunguo wa umma. Inajumuisha maelezo ya ufunguo, kitambulisho cha mmiliki (mada), na saini ya dijitali kutoka kwa mamlaka inayotegemewa (mtoaji). Ikiwa programu inategemea mtoaji na saini ni halali, mawasiliano salama na mmiliki wa ufunguo yanawezekana.

Vyeti kwa kawaida vinatolewa na mamlaka ya vyeti (CAs) katika muundo wa miundombinu ya ufunguo wa umma (PKI). Njia nyingine ni mtandao wa kuaminiana, ambapo watumiaji wanathibitisha ufunguo wa kila mmoja moja kwa moja. Muundo wa kawaida wa vyeti ni X.509, ambayo inaweza kubadilishwa kwa mahitaji maalum kama ilivyoelezwa katika RFC 5280.

x509 Common Fields

Sehemu za Kawaida katika Vyeti vya x509

Katika vyeti vya x509, sehemu kadhaa zinacheza majukumu muhimu katika kuhakikisha halali na usalama wa cheti. Hapa kuna muhtasari wa sehemu hizi:

  • Nambari ya Toleo inaashiria toleo la muundo wa x509.
  • Nambari ya Mfululizo inatambulisha cheti ndani ya mfumo wa Mamlaka ya Cheti (CA), hasa kwa ajili ya kufuatilia kufutwa.
  • Sehemu ya Mada inawakilisha mmiliki wa cheti, ambaye anaweza kuwa mashine, mtu binafsi, au shirika. Inajumuisha kitambulisho kilicho na maelezo kama:
  • Jina la Kawaida (CN): Majina ya maeneo yanayofunikwa na cheti.
  • Nchi (C), Eneo (L), Jimbo au Mkoa (ST, S, au P), Shirika (O), na Kitengo cha Shirika (OU) vinatoa maelezo ya kijiografia na ya shirika.
  • Jina Lililoainishwa (DN) linajumuisha kitambulisho kamili cha mada.
  • Mtoaji inaelezea nani alithibitisha na kusaini cheti, ikiwa ni pamoja na sehemu zinazofanana kama za Mada kwa CA.
  • Muda wa Halali umewekwa na alama za Siyo Kabla na Siyo Baada, kuhakikisha cheti hakitumiki kabla au baada ya tarehe fulani.
  • Sehemu ya Ufunguo wa Umma, muhimu kwa usalama wa cheti, inaelezea algorithimu, ukubwa, na maelezo mengine ya kiufundi ya ufunguo wa umma.
  • x509v3 extensions zinaboresha kazi ya cheti, zikielezea Matumizi ya Ufunguo, Matumizi ya Ufunguo wa Kupanua, Jina Alternatif la Mada, na mali nyingine za kuboresha matumizi ya cheti.

Matumizi ya Ufunguo na Upanuzi

  • Matumizi ya Ufunguo yanatambulisha matumizi ya cryptographic ya ufunguo wa umma, kama saini ya dijitali au ufunguo wa kuandika.
  • Matumizi ya Ufunguo wa Kupanua yanapunguza zaidi matumizi ya cheti, kwa mfano, kwa uthibitisho wa seva ya TLS.
  • Jina Alternatif la Mada na Kikomo cha Msingi vin定义 maelezo ya ziada ya majina ya mwenyeji yanayofunikwa na cheti na ikiwa ni cheti cha CA au cheti cha mwisho, mtawalia.
  • Vitambulisho kama Kitambulisho cha Ufunguo wa Mada na Kitambulisho cha Ufunguo wa Mamlaka vinahakikisha upekee na ufuatiliaji wa funguo.
  • Upatikanaji wa Taarifa za Mamlaka na Nukuu za Usambazaji wa CRL vinatoa njia za kuthibitisha CA inayotoa na kuangalia hali ya kufutwa kwa cheti.
  • CT Precertificate SCTs vinatoa kumbukumbu za uwazi, muhimu kwa kuaminika kwa umma katika cheti.
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
from cryptography.hazmat.backends import default_backend

# Load an x509 certificate (assuming cert.pem is a certificate file)
with open("cert.pem", "rb") as file:
cert_data = file.read()
certificate = x509.load_pem_x509_certificate(cert_data, default_backend())

# Accessing fields
serial_number = certificate.serial_number
issuer = certificate.issuer
subject = certificate.subject
public_key = certificate.public_key()

print(f"Serial Number: {serial_number}")
print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")

Tofauti kati ya OCSP na CRL Distribution Points

OCSP (RFC 2560) inahusisha mteja na mrespondia wakifanya kazi pamoja ili kuangalia kama cheti cha dijitali cha funguo za umma kimeondolewa, bila kuhitaji kupakua CRL kamili. Njia hii ni bora zaidi kuliko CRL ya jadi, ambayo inatoa orodha ya nambari za serial za vyeti vilivyondolewa lakini inahitaji kupakua faili kubwa. CRLs zinaweza kujumuisha hadi ingizo 512. Maelezo zaidi yanapatikana hapa.

Nini maana ya Uwazi wa Cheti

Uwazi wa Cheti husaidia kupambana na vitisho vinavyohusiana na vyeti kwa kuhakikisha utoaji na uwepo wa vyeti vya SSL unaonekana kwa wamiliki wa domain, CAs, na watumiaji. Malengo yake ni:

  • Kuzuia CAs kutoa vyeti vya SSL kwa domain bila maarifa ya mmiliki wa domain.
  • Kuanzisha mfumo wa ukaguzi wazi wa kufuatilia vyeti vilivyotolewa kwa makosa au kwa uovu.
  • Kulinda watumiaji dhidi ya vyeti vya udanganyifu.

Makaratasi ya Vyeti

Makaratasi ya vyeti ni rekodi za vyeti zinazoweza kukaguliwa hadharani, zinazoongezwa tu, zinazoshughulikiwa na huduma za mtandao. Makaratasi haya yanatoa uthibitisho wa kihesabu kwa ajili ya ukaguzi. Mamlaka za utoaji na umma wanaweza kuwasilisha vyeti kwenye makaratasahaya au kuyatafuta kwa ajili ya uthibitisho. Ingawa idadi halisi ya seva za makaratasi si ya kudumu, inatarajiwa kuwa chini ya elfu moja duniani kote. Seva hizi zinaweza kusimamiwa kwa uhuru na CAs, ISPs, au shirika lolote linalovutiwa.

Utafutaji

Ili kuchunguza makaratasahaya ya Uwazi wa Cheti kwa domain yoyote, tembelea https://crt.sh/.

Mifumo tofauti inapatikana kwa ajili ya kuhifadhi vyeti, kila moja ikiwa na matumizi yake na ulinganifu. Muhtasari huu unashughulikia mifumo kuu na unatoa mwongozo juu ya kubadilisha kati yao.

Mifumo

PEM Format

  • Mfumo unaotumika zaidi kwa vyeti.
  • Unahitaji faili tofauti kwa vyeti na funguo za faragha, zilizowekwa katika Base64 ASCII.
  • Upanuzi wa kawaida: .cer, .crt, .pem, .key.
  • Kimsingi hutumiwa na Apache na seva zinazofanana.

DER Format

  • Mfumo wa binary wa vyeti.
  • Huna taarifa za "BEGIN/END CERTIFICATE" zinazopatikana katika faili za PEM.
  • Upanuzi wa kawaida: .cer, .der.
  • Mara nyingi hutumiwa na majukwaa ya Java.

P7B/PKCS#7 Format

  • Huhifadhiwa katika Base64 ASCII, ikiwa na upanuzi .p7b au .p7c.
  • Inajumuisha vyeti tu na vyeti vya mnyororo, ikiondoa funguo za faragha.
  • Inasaidiwa na Microsoft Windows na Java Tomcat.

PFX/P12/PKCS#12 Format

  • Mfumo wa binary unaojumuisha vyeti vya seva, vyeti vya kati, na funguo za faragha katika faili moja.
  • Upanuzi: .pfx, .p12.
  • Kimsingi hutumiwa kwenye Windows kwa ajili ya kuagiza na kuuza vyeti.

Kubadilisha Mifumo

Mabadiliko ya PEM ni muhimu kwa ajili ya ulinganifu:

  • x509 hadi PEM
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
  • PEM hadi DER
openssl x509 -outform der -in certificatename.pem -out certificatename.der
  • DER hadi PEM
openssl x509 -inform der -in certificatename.der -out certificatename.pem
  • PEM hadi P7B
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
  • PKCS7 hadi PEM
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem

PFX conversions ni muhimu kwa usimamizi wa vyeti kwenye Windows:

  • PFX to PEM
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
  • PFX to PKCS#8 inahusisha hatua mbili:
  1. Geuza PFX kuwa PEM
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
  1. Geuza PEM kuwa PKCS8
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
  • P7B to PFX pia inahitaji amri mbili:
  1. Geuza P7B kuwa CER
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
  1. Geuza CER na Funguo Binafsi kuwa PFX
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
  • ASN.1 (DER/PEM) editing (inafanya kazi na vyeti au karibu muundo wowote wa ASN.1):
  1. Clone asn1template
git clone https://github.com/wllm-rbnt/asn1template.git
  1. Geuza DER/PEM kuwa muundo wa uzalishaji wa OpenSSL
asn1template/asn1template.pl certificatename.der > certificatename.tpl
asn1template/asn1template.pl -p certificatename.pem > certificatename.tpl
  1. Hariri certificatename.tpl kulingana na mahitaji yako
vim certificatename.tpl
  1. Jenga upya cheti kilichobadilishwa
openssl asn1parse -genconf certificatename.tpl -out certificatename_new.der
openssl asn1parse -genconf certificatename.tpl -outform PEM -out certificatename_new.pem


Tumia Trickest kujenga na kujiendesha kwa urahisi kazi zinazotumiwa na zana za jamii zilizoendelea zaidi duniani.
Pata Ufikiaji Leo:

{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}

{% hint style="success" %} Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}