
AI 기반 개인 식별 정보(PII) 스캐너입니다.
⠀⠀⠀⠀⠀⠀⠀⣤⣤⣄⣀⡀⠀⠀⠀⢀⣠⣤⣤⣄⡀⠀⠀⠀⢀⣀⣠⣤⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠸⣿⣿⡿⠿⢿⣷⡄⢠⣿⣿⣿⣿⣿⣿⡄⢀⣾⡿⠿⢿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⠀⢸⣿⡇⢸⣿⣿⣿⣿⣿⣿⡇⢸⣿⡇⠀⠀⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣠⣤⡀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⢸⣿⣿⣿⣿⣿⣿⡇⢸⣿⡇⠀⠀⠀⠀⠀⠀⠀⢀⣤⣄⠀⠀⠀
⠸⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⢸⣿⡇⢸⣿⣿⣿⣿⣿⣿⡇⢸⣿⡇⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀
⠀⠉⠉⠁⠀⠀⠀⠀⣿⣿⠀⢸⣿⡇⠀⠉⣿⣿⣿⣿⠉⠀⢸⣿⡇⠀⣿⣿⠀⠀⠀⠀⠈⠉⠉⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣀⣈⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⣁⣀⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠘⠿⠿⠿⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠿⠿⠃⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⣤⣤⣤⣤⣤⣤⣴⣿⣿⣿⡇⢸⣿⡿⣿⣦⣤⣤⣤⣤⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢸⣿⠋⠉⠉⠉⠉⠉⠉⢸⣿⡇⢸⣿⡇⠈⠉⠉⠉⠉⠉⠙⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⢰⣿⣿⣦⠀⢰⣿⣿⣦⠀⢸⣿⡇⢸⣿⡇⠀⣰⣿⣿⡆⠀⣴⣿⣿⡆⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠈⠻⠿⠋⠀⠘⣿⣿⠃⠀⢸⣿⡇⢸⣿⡇⠀⠘⣿⣿⠃⠀⠙⠿⠟⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣦⣤⣼⣿⠃⠘⣿⣧⣄⣤⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠛⠛⠁⠀⠀⠈⠛⠛⠛⠋⠀⠀⠀
⠀⠀⠀⠀⠀⠀ ⠀O C T O P I I⠀⠀⠀⠀
Copyright © 2023 RedHunt Labs Private Limited
Octopii는 광학 문자 인식(OCR), 정규 표현식 목록 및 자연어 처리(NLP)를 사용하여 이미지, PDF 및 문서에서 정부 ID, 주소, 이메일 등 개인 식별 정보(PII)를 공개된 위치에서 검색하는 도구입니다.
PII 유출은 사이버 보안 분야에서 종종 간과됩니다. RedHunt Labs에서는 조직과 서비스에 필요한 사이버 보안 솔루션을 제공하기 위해 항상 새롭고 혁신적인 방법을 모색합니다. 우리는 상당수의 조직이 서버를 잘못 구성한 사례를 많이 발견했습니다. 이로 인해 직원 및 고객의 PII가 지속적으로 유출되어 악의적인 당사자가 출처, ID 번호, 연락처 정보 및 위치와 같은 민감한 정보를 얻을 수 있습니다.
이러한 이유로 우리는 인터넷에서 유출된 PII 및 민감한 문서의 자동 발견 및 추출이 얼마나 쉬운지 보여주고 탐지하는 도구인 Octopii를 만들었습니다.
pip install -r requirements.txt를 통해 모든 의존성을 설치합니다.sudo apt install tesseract-ocr -y, Arch Linux에서는 sudo pacman -Syu tesseract를 통해 로컬에 Tesseract 도우미를 설치합니다.python -m spacy download en_core_web_sm를 통해 로컬에 Spacy 언어 정의를 설치합니다.위 단계를 완료하면 준비가 끝납니다.
Octopii를 실행하려면 다음을 입력하세요.
python3 octopii.py <스캔할 위치>
여기서 <스캔할 위치>는 파일 또는 디렉터리입니다.
Octopii는 현재 로컬 파일시스템 경로, S3 URL 및 Apache 오픈 디렉터리 목록을 통한 로컬 스캔을 지원합니다. 또한 개별 이미지 URL이나 파일을 인수로 제공할 수도 있습니다.
Octopii를 테스트할 수 있도록 샘플 PII가 포함된 dummy-pii/ 폴더를 제공했습니다. 이를 인수로 전달하면 다음과 같은 출력이 생성됩니다.
owais@artemis ~ $ python3 octopii.py dummy-pii/
Searching for PII in dummy-pii/dummy-drivers-license-nebraska-us.jpg
{
"file_path": "dummy-pii/dummy-drivers-license-nebraska-us.jpg",
"pii_class": "Nebraska Driver's License",
"country_of_origin": "United States",
"faces": 1,
"identifiers": [],
"emails": [],
"phone_numbers": [
"4000002170"
],
"addresses": [
"Nebraska"
]
}
Searching for PII in dummy-pii/dummy-PAN-India.jpg
{
"file_path": "dummy-pii/dummy-PAN-India.jpg",
"pii_class": "Permanent Account Number",
"country_of_origin": "India",
"faces": 0,
"identifiers": [],
"emails": [],
"phone_numbers": [],
"addresses": [
"INDIA"
]
}
...
output.txt 파일이 생성되어 도구의 출력을 담고 있습니다. 이 파일은 실시간으로 순차적으로 추가됩니다.
Octopii는 Tesseract를 사용한 광학 문자 인식(OCR)과 NLTK를 사용한 자연어 처리(NLP)를 통해 개인 식별 정보 문자열을 탐지합니다. 다음 단계로 이루어집니다:
Octopii는 이미지(jpg 및 png)와 문서(pdf, doc, txt 등)를 스캔합니다. 3가지 소스를 지원합니다:
이미지는 Python Imaging Library(PIL)를 통해 감지되며 OpenCV로 열립니다. PDF는 이미지 목록으로 변환된 후 OCR을 통해 스캔됩니다. 텍스트 기반 파일 형식은 문자열로 읽혀 OCR 없이 스캔됩니다.
"Haar cascade"로 알려진 이진 분류 이미지 감지 기술을 사용하여 이미지 내 얼굴을 감지합니다. 사전 훈련된 캐스케이드 모델이 이 리포지토리에 제공되어 있으며, OpenCV가 사용할 캐스케이드 데이터를 포함합니다. 동일한 PII 이미지에서 여러 얼굴을 감지할 수 있으며, 감지된 얼굴 수가 반환됩니다.
이미지는 다음 이미지 변환 단계를 통해 텍스트 추출을 위해 "정리"됩니다:

이러한 단계는 이미지 데이터(사진의 색상 포함)를 제거하므로, 이미지 정리 과정은 얼굴 감지 이후에 수행됩니다.
Tesseract를 사용하여 이미지/파일에서 모든 텍스트 문자열을 가져옵니다. 그런 다음 개행 문자('\n')와 공백(' ')으로 분할하여 문자열 목록으로 토큰화합니다. null 문자열이나 단일 문자와 같은 왜곡된 텍스트는 이 목록에서 제외되어, 잠재적인 단어의 '의미 있는' 목록이 생성됩니다.
이 단어 목록은 유사성 검사 함수에 입력됩니다. 이 함수는 Gestalt 패턴 매칭을 사용하여 PII 문서에서 추출된 각 단어를 definitions.json에 있는 키워드 목록과 비교합니다. 이 검사는 정리 단계마다 한 번씩 수행됩니다. 키워드 목록에서 단어가 나타나는 횟수가 계산되어 신뢰도 점수를 도출하는 데 사용됩니다. 특정 정의의 키워드가 이러한 스캔에서 반복적으로 나타나면 해당 정의가 가장 높은 점수를 얻어 예측된 PII 클래스로 선택됩니다.
Octopii는 또한 정규 표현식을 사용하여 이메일, 전화번호 및 일반적인 정부 ID 고유 식별자와 같은 민감한 PII 하위 문자열을 확인합니다. 또한 자연어 처리를 사용하여 주소 및 국가와 같은 지리적 위치 데이터를 추출할 수 있습니다.
출력은 다음으로 구성됩니다:
file_path: PII를 포함하는 파일의 위치pii_class: 이 파일이 포함하는 PII 유형country_of_origin: 이 PII의 출처 국가identifiers: PII에서 언급된 개인을 식별하는 데 사용될 수 있는 고유 식별자, 코드 또는 번호emails 및 phone_numbers: 파일 내 연락처 정보addresses: PII의 모든 형태의 지리적 위치 데이터. 개인의 위치를 삼각 측량하는 데 사용될 수 있습니다.Octopii에 기여하는 방법을 알아보려면 여기를 클릭하세요.
...그 외 수많은 분들께 감사드립니다.
이 도구는 연구 및 교육 목적으로만 사용됩니다. RedHunt Labs 및 이 프로젝트의 다른 기여자는 이 도구의 악의적인 사용에 대해 책임을 지지 않습니다.
Copyright © 2023 RedHunt Labs Private Limited.
By Owais Shaikh