SlideShare uma empresa Scribd logo
1 de 95
Nein, danke!
MAN IN THE MIDDLE ?
Daniel Schneller – CenterDevice GmbH
SSL – und alles ist gut™
SSL – und alles ist gut™
SSL – und alles ist gut™
…oder ?
Mac App Store
Mac App Store
Mac App Store
Und wo war nun SSL?
SSL – Chain of Trust
SSL – Chain of Trust
SSL – Chain of Trust
Root CA Certificate
SSL – Chain of Trust
Root CA Certificate
Intermediate CA Certificate(s)stellt aus
SSL – Chain of Trust
Root CA Certificate
Intermediate CA Certificate(s)
Leaf Certificate
stellt aus
stellt aus
SSL – Chain of Trust
SSL – Chain of Trust
SSL – Chain of Trust
SSL – Chain of Trust
SSL – Chain of Trust
SSL – Chain of Trust
Und wie viele
Root-CAs gibt es ?
System Roots
System Roots
System Roots
Windows 8: ~350
Mozilla: ~160
iOS 6: ~220
Man In The Middle?
Man In The Middle
[Corporate] Proxy Client
Man In The Middle
[Corporate] Proxy Client
Man In The Middle
[Corporate] Proxy Client
Man In The Middle
Website [Corporate] Proxy Client
Man In The Middle
Website [Corporate] Proxy Client
Man In The Middle
Website [Corporate] Proxy Client
Man In The Middle
Website [Corporate] Proxy Client
Man In The Middle
Man In The Middle
Man In The Middle
Man In The Middle
Man In The Middle
Man In The Middle
Konsequenzen
• Überwachung
• Veränderung
• Gesendete und empfangene Daten
• Chain-Of-Trust formal intakt
Gut und böse
• Debugging
• Reverse Engineering
• Security Audits
• Lernen undVerstehen
ReST Debugging
Gut und böse
• Phishing
• Identitätsdiebstahl
• Industriespionage
• …
Mac App Store
Mac App Store
Mac App Store
Demo 1
Video 1
Video 2
Gegenmaßnahmen
Zertifikatsvergleich
Zertifikatsvergleich
• Serverzertifikat in Client-App
• Vergleich mit vom Server präsentiertem
Zertifikat
• Verbindungsaufbau nur bei exakter
Übereinstimmung
Zertifikatsvergleich
Client AppServer
Zertifikatsvergleich
Client AppServer
==
Zertifikatsvergleich
SecTrustResultType evaluationResult;
OSStatus status =
SecTrustEvaluate(srvTrust,
&evaluationResult);
if (status == errSecSuccess) {
if (evaluationResult == kSecTrustResultUnspecified) {
// ...
}
}
• Schritt 1: Chain-of-Trust validieren
Zertifikatsvergleich
SecTrustResultType evaluationResult;
OSStatus status =
SecTrustEvaluate(srvTrust,
&evaluationResult);
if (status == errSecSuccess) {
if (evaluationResult == kSecTrustResultUnspecified) {
// ...
}
}
• Schritt 1: Chain-of-Trust validieren
Zertifikatsvergleich
SecTrustResultType evaluationResult;
OSStatus status =
SecTrustEvaluate(srvTrust,
&evaluationResult);
if (status == errSecSuccess) {
if (evaluationResult == kSecTrustResultUnspecified) {
// ...
}
}
• Schritt 1: Chain-of-Trust validieren
Zertifikatsvergleich
SecTrustResultType evaluationResult;
OSStatus status =
SecTrustEvaluate(srvTrust,
&evaluationResult);
if (status == errSecSuccess) {
if (evaluationResult == kSecTrustResultUnspecified) {
// ...
}
}
• Schritt 1: Chain-of-Trust validieren
Zertifikatsvergleich
SecTrustResultType evaluationResult;
OSStatus status =
SecTrustEvaluate(srvTrust,
&evaluationResult);
if (status == errSecSuccess) {
if (evaluationResult == kSecTrustResultUnspecified) {
// ...
}
}
• Schritt 1: Chain-of-Trust validieren
Zertifikatsvergleich
SecTrustResultType evaluationResult;
OSStatus status =
SecTrustEvaluate(srvTrust,
&evaluationResult);
if (status == errSecSuccess) {
if (evaluationResult == kSecTrustResultUnspecified) {
// ...
}
}
• Schritt 1: Chain-of-Trust validieren
NSString *refPath =
[[NSBundle mainBundle] pathForResource:@"reference"
ofType:@"der"];
NSData *refCertData =
[[NSData alloc] initWithContentsOfFile:refPath];
Zertifikatsvergleich
• Schritt 2: Referenz-Zertifikat laden
NSString *refPath =
[[NSBundle mainBundle] pathForResource:@"reference"
ofType:@"der"];
NSData *refCertData =
[[NSData alloc] initWithContentsOfFile:refPath];
Zertifikatsvergleich
• Schritt 2: Referenz-Zertifikat laden
Zertifikatsvergleich
• Schritt 2: Referenz-Zertifikat laden
NSString *refPath =
[[NSBundle mainBundle] pathForResource:@"reference"
ofType:@"der"];
NSData *refCertData =
[[NSData alloc] initWithContentsOfFile:refPath];
Zertifikatsvergleich
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
certificateVerified = [refCertData
isEqualToData:certData];
}
• Schritt 3: Referenzvergleich
Zertifikatsvergleich
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
certificateVerified = [refCertData
isEqualToData:certData];
}
• Schritt 3: Referenzvergleich
Zertifikatsvergleich
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
certificateVerified = [refCertData
isEqualToData:certData];
}
• Schritt 3: Referenzvergleich
Zertifikatsvergleich
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
certificateVerified = [refCertData
isEqualToData:certData];
}
• Schritt 3: Referenzvergleich
Zertifikatsvergleich
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
certificateVerified = [refCertData
isEqualToData:certData];
}
• Schritt 3: Referenzvergleich
Zertifikatsvergleich
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
certificateVerified = [refCertData
isEqualToData:certData];
}
• Schritt 3: Referenzvergleich
Zertifikatsvergleich
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
certificateVerified = [refCertData
isEqualToData:certData];
}
• Schritt 3: Referenzvergleich
Demo 2
Video
Fingerprintvergleich
Fingerprintvergleich
• Ähnlich Zertifikatsvergleich
• Vergleich des Zertifikat-Hashs mit Referenz
• Zertifikat nicht mit App ausgeliefert
• Beispiel: Apple Software Update
Fingerprintvergleich
Client AppServer
1122 3344 5566
7788 9900 AABB
CCDD EEFF 9988
7766
SHA-1 Hash
Fingerprintvergleich
Client AppServer
1122 3344 5566
7788 9900 AABB
CCDD EEFF 9988
7766
SHA-1 Hash
Fingerprintvergleich
Client AppServer
==
1122 3344 5566
7788 9900 AABB
CCDD EEFF 9988
7766
SHA-1 Hash
1122 3344 5566
7788 9900 AABB
CCDD EEFF 9988
7766
Fingerprintvergleich
SecTrustResultType evaluationResult;
OSStatus status =
SecTrustEvaluate(srvTrust,
&evaluationResult);
if (status == errSecSuccess) {
if (evaluationResult == kSecTrustResultUnspecified) {
// ...
}
}
• Schritt 1: Chain-of-Trust validieren
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Fingerprintvergleich
static NSString* const kReferenceFP = @"AC .... DC";
BOOL found = NO;
CFIndex crtCount = SecTrustGetCertificateCount(srvTrust);
for (CFIndex j = 0; j < crtCount && !found; j++) {
SecCertificateRef cert =
SecTrustGetCertificateAtIndex(srvTrust, j);
NSData* certData =
CFBridgingRelease(SecCertificateCopyData(cert));
NSString* fingerprint = [self sha1:certData];
found = [kReferenceFP isEqualToString:fingerprint]
}
• Schritt 2: Fingerprint berechnen
Demo 3
Video
Fallstricke
Fallstricke
• Zertifikatswechsel
• Abgelaufen
• Kompromittiert
• Frühzeitiges App-Update planen
• Altes und neues Zertifikat gleichzeitig
Variante
Variante
• Prüfung des Root-CA Zertifikats
• Trade-Off Flexibilität gegen Sicherheit
• Updates nur bei Root-CA Wechsel nötig
Fazit
Fazit
• SSL gewährleistet
• Vertraulichkeit
• Identitätsgarantie
• CA System (oft) ausreichend
• Mehr Sicherheit = Höherer Aufwand
Informierte
Entscheidungen treffen!
Links
Sample Code
• github.com/dschneller/mitm-no-thank-you
Tools
• github.com/ADVTOOLS/ADVcertificator
• github.com/ADVTOOLS/ADVTrustStore
• www.apple.com/support/iphone/enterprise
• technet.microsoft.com/en-us/library/
cc754841.aspx
Links
TLS Session Cache
• developer.apple.com/library/ios/#qa/qa1727
Root-CA Listen
• support.apple.com/kb/HT5012
• www.mozilla.org/projects/security/certs/included/
• social.technet.microsoft.com/wiki/contents/
articles/14215.windows-and-windows-phone-8-
ssl-root-certificate-program-member-cas.aspx
• Android: Settings–Security–Trusted Credentials
(ab 4.0)
Vielen Dank!
Fragen ?
daniel.schneller@centerdevice.de
@dschneller
Das war’s.Wirklich :)

Mais conteúdo relacionado

Semelhante a Man in the Middle? - Nein, danke!

Client certificate validation in windows 8
Client certificate validation in windows 8Client certificate validation in windows 8
Client certificate validation in windows 8Ashish Agrawal
 
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...BlueHat Security Conference
 
AWS IoTで家庭内IoTをやってみた【JAWS DAYS 2016】
AWS IoTで家庭内IoTをやってみた【JAWS DAYS 2016】AWS IoTで家庭内IoTをやってみた【JAWS DAYS 2016】
AWS IoTで家庭内IoTをやってみた【JAWS DAYS 2016】tsuchimon
 
MongoDB World 2019: Life In Stitch-es
MongoDB World 2019: Life In Stitch-esMongoDB World 2019: Life In Stitch-es
MongoDB World 2019: Life In Stitch-esMongoDB
 
Issue certificates with PyOpenSSL
Issue certificates with PyOpenSSLIssue certificates with PyOpenSSL
Issue certificates with PyOpenSSLPau Freixes
 
Seattle C* Meetup: Hardening cassandra for compliance or paranoia
Seattle C* Meetup: Hardening cassandra for compliance or paranoiaSeattle C* Meetup: Hardening cassandra for compliance or paranoia
Seattle C* Meetup: Hardening cassandra for compliance or paranoiazznate
 
Hardening cassandra for compliance or paranoia
Hardening cassandra for compliance or paranoiaHardening cassandra for compliance or paranoia
Hardening cassandra for compliance or paranoiazznate
 
The Last Pickle: Hardening Apache Cassandra for Compliance (or Paranoia).
The Last Pickle: Hardening Apache Cassandra for Compliance (or Paranoia).The Last Pickle: Hardening Apache Cassandra for Compliance (or Paranoia).
The Last Pickle: Hardening Apache Cassandra for Compliance (or Paranoia).DataStax Academy
 
Ssl in a nutshell
Ssl in a nutshellSsl in a nutshell
Ssl in a nutshellFrank Kelly
 
Browsers with Wings
Browsers with WingsBrowsers with Wings
Browsers with WingsRemy Sharp
 
DEF CON 27 - ALVARO MUNOZ / OLEKSANDR MIROSH - sso wars the token menace
DEF CON 27 - ALVARO MUNOZ / OLEKSANDR MIROSH - sso wars the token menaceDEF CON 27 - ALVARO MUNOZ / OLEKSANDR MIROSH - sso wars the token menace
DEF CON 27 - ALVARO MUNOZ / OLEKSANDR MIROSH - sso wars the token menaceFelipe Prado
 
Cisco iso based CA (certificate authority)
Cisco iso based CA (certificate authority)Cisco iso based CA (certificate authority)
Cisco iso based CA (certificate authority)Netwax Lab
 
使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務升煌 黃
 
SSL Failing, Sharing, and Scheduling
SSL Failing, Sharing, and SchedulingSSL Failing, Sharing, and Scheduling
SSL Failing, Sharing, and SchedulingDavid Evans
 
Static Typing in Vault
Static Typing in VaultStatic Typing in Vault
Static Typing in VaultGlynnForrest
 
Formal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction ContractFormal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction ContractGera Shegalov
 
The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019Ludmila Nesvitiy
 
SSL Certificates and Operations
SSL Certificates and OperationsSSL Certificates and Operations
SSL Certificates and OperationsNisheed KM
 

Semelhante a Man in the Middle? - Nein, danke! (20)

Client certificate validation in windows 8
Client certificate validation in windows 8Client certificate validation in windows 8
Client certificate validation in windows 8
 
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
BlueHat v17 || Where, how, and why is SSL traffic on mobile getting intercept...
 
AWS IoTで家庭内IoTをやってみた【JAWS DAYS 2016】
AWS IoTで家庭内IoTをやってみた【JAWS DAYS 2016】AWS IoTで家庭内IoTをやってみた【JAWS DAYS 2016】
AWS IoTで家庭内IoTをやってみた【JAWS DAYS 2016】
 
MongoDB World 2019: Life In Stitch-es
MongoDB World 2019: Life In Stitch-esMongoDB World 2019: Life In Stitch-es
MongoDB World 2019: Life In Stitch-es
 
Issue certificates with PyOpenSSL
Issue certificates with PyOpenSSLIssue certificates with PyOpenSSL
Issue certificates with PyOpenSSL
 
Java security
Java securityJava security
Java security
 
Seattle C* Meetup: Hardening cassandra for compliance or paranoia
Seattle C* Meetup: Hardening cassandra for compliance or paranoiaSeattle C* Meetup: Hardening cassandra for compliance or paranoia
Seattle C* Meetup: Hardening cassandra for compliance or paranoia
 
Hardening cassandra for compliance or paranoia
Hardening cassandra for compliance or paranoiaHardening cassandra for compliance or paranoia
Hardening cassandra for compliance or paranoia
 
The Last Pickle: Hardening Apache Cassandra for Compliance (or Paranoia).
The Last Pickle: Hardening Apache Cassandra for Compliance (or Paranoia).The Last Pickle: Hardening Apache Cassandra for Compliance (or Paranoia).
The Last Pickle: Hardening Apache Cassandra for Compliance (or Paranoia).
 
Ssl in a nutshell
Ssl in a nutshellSsl in a nutshell
Ssl in a nutshell
 
Browsers with Wings
Browsers with WingsBrowsers with Wings
Browsers with Wings
 
DEF CON 27 - ALVARO MUNOZ / OLEKSANDR MIROSH - sso wars the token menace
DEF CON 27 - ALVARO MUNOZ / OLEKSANDR MIROSH - sso wars the token menaceDEF CON 27 - ALVARO MUNOZ / OLEKSANDR MIROSH - sso wars the token menace
DEF CON 27 - ALVARO MUNOZ / OLEKSANDR MIROSH - sso wars the token menace
 
Cisco iso based CA (certificate authority)
Cisco iso based CA (certificate authority)Cisco iso based CA (certificate authority)
Cisco iso based CA (certificate authority)
 
使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務
 
TLS and Certificates
TLS and CertificatesTLS and Certificates
TLS and Certificates
 
SSL Failing, Sharing, and Scheduling
SSL Failing, Sharing, and SchedulingSSL Failing, Sharing, and Scheduling
SSL Failing, Sharing, and Scheduling
 
Static Typing in Vault
Static Typing in VaultStatic Typing in Vault
Static Typing in Vault
 
Formal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction ContractFormal Verification of Transactional Interaction Contract
Formal Verification of Transactional Interaction Contract
 
The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019The battle of Protractor and Cypress - RunIT Conference 2019
The battle of Protractor and Cypress - RunIT Conference 2019
 
SSL Certificates and Operations
SSL Certificates and OperationsSSL Certificates and Operations
SSL Certificates and Operations
 

Último

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Man in the Middle? - Nein, danke!