본문 바로가기

전체 글251

버퍼 오버플로(buffer overflow) 버퍼 오버플로(buffer overflow) 프로그램이 데이터를 버퍼(buffer)에 저장할 때, 버퍼가 가득 차 넘치게 되어 프로그래머가 지정한 부분 바깥에 덮어 씌워버리는 취약점, 버그, 이를 이용한 공격 방법을 말한다. 넘쳐난 데이터는 원래 데이터를 밀어내거나 이상한 곳에 저장하는 것이 아니라 덮어 씌우는 것이다. 덮어 씌워진 메모리에는 다른 데이터가 이미 포함되어 있을 수 있고, 이 때문에 메모리 접근 오류, 프로그램 종료, 시스템 보안 취약점 등이 발생할 수 있다. 버퍼 오버플로는 보통 데이터를 저장하는 과정에서 그 데이터를 저장할 메모리 위치가 유효한지를 검사하지 않아 발생한다. 이러한 경우 데이터가 담긴 위치 근처에 있는 값이 손상되고 그 손상이 프로그램 실행에 영향을 미칠 수도 있다. 특히.. 2020. 2. 15.
악성코드(악성 소프트웨어, Malware) 악성 소프트웨어(악성코드, Malware) 컴퓨터 바이러스, 웜, 트로이 목마 등 컴퓨터 사용자에게 해를 끼치는 모든 코드의 총칭 악성코드의 분류 독립형과 기생형 호스트 프로그램을 필요로 하거나, 필요로 하지 않는 코드에 대한 분류 자체적으로 구동될 수 있는 독립형은 운영체제에 의해 스케줄 되어 구동될 수 있다. 웜과 좀비 프로그램이 이에 속한다. 다른 프로그램(코드)이 실행될 때 같이 동작하거나 시스템에 접근해야 사용이 가능한 악성코드 웨어를 기생형으로 나눈다. 바이러스와 백도어가 이에 속한다. 자가 복제 여부 악성코드는 자가 복제 여부에 따라 바이러스성 악성 코드와 비 바이러스성 악성 코드로 나눌 수 있다. 자가 복제가 가능한 악성코드는 웜과 바이러스 등이 있으며, 자가 복제가 불가능한 악성코드는 트.. 2020. 2. 7.
은닉 채널(Covert Channel) 은닉 채널(Covert Channel) 기본 채널에 기생하는 통신 채널로 엔티티가 허가되지 않은 방식으로 정보를 얻어낸다. 은닉 메시지는 다른 사람이 눈으로 볼 수 없으며 송신자와 수신자만이 알 수 있다. 보안 메커니즘에 의해 통제되지 않는 정보 흐름으로 시스템의 보안 정책을 위반하는 행위이다. 은닉채널 보안 대책 대역폭 제한 : 은닉 채널의 위험은 대역폭에 따라 변경된다. 때문에 한 번에 전달되는 정보량을 줄이기 위해서 대역폭을 제한한다. 2020. 2. 5.
피싱(Phishing), 파밍(Pharming), 스미싱(Smishing) 피싱(Phishing) 개인정보(private data)와 낚시(fishing)의 합성어로 개인정보를 낚아낸다는 의미를 가지고 있다. 수신자에게 이메일을 발송해 위조된 사이트로 이동시킨 후 사이트 개편 등의 이유로 고객정보을 요구하는 방법. 파밍(Pharming) 피싱에 이어 등장한 인터넷 사기 수법으로 넓은 의미에서는 피싱의 한 유형으로 한 단계 진화한 형태라 할 수 있다. 피싱은 이메일을 보내 위조된 사이트로의 접속을 유도하는 방식이지만 파밍은 공식적인 사이트의 도메인 자체를 중간에 탈취하는 방식이다. 피싱의 경우 사용자가 주의하여 예방할 수 있지만 파밍은 도메인이나 url 주소를 주의 깊게 살펴본다 해도 알아차리기가 힘들다. 스미싱(Smishing) SMS와 피싱의 합성어로 문자메시지를 이용해 피싱.. 2020. 2. 4.
레인보우 테이블(Rainbow table) 레인보우 테이블(Rainbow table) 해시함수를 사용해 만들 수 있는 값들을 미리 저장해 놓은 테이블 보통 해시 함수를 이용하여 저장된 비밀 번호로부터 원래의 비밀번호를 추출해 내는 데 사용된다. 레인보우 테이블 공격 예방 솔트(SALT) 값 추가 해시함수의 특성상 값이 하나만 바뀌어도 전혀 다른 결괏값이 나오기 때문에 패스워드 뒤에 솔트 값을 붙여 해시함수를 적용하는 방법이다. 복잡한 비밀번호 설정 2020. 2. 4.
사전 공격(Dictionary Attack), 무차별 대입 공격(Brute-force) 사전 공격, 사전 대입 공격(Dictionary Attack) 자주 사용하는 단어나 문장, 생일 등을 사전(Dictionary)으로 미리 만들어 놓고 이를 대입해 패스워드를 알아내는 공격이다. 많은 사람들이 자신의 이니셜, 생일과 같은 개인 정보를 패스워드로 사용하기 때문에 상대방의 개인 정보를 충분히 알고 있다면 매우 효율적인 공격 방법이다. 무차별 대입 공격(Brute-force) 성공할 때까지 가능한 모든 조합의 경우의 수를 시도해보는 공격 방법 시간과 자원만 충분하다면 확실한 방법으로 암호를 해독할 수 있는 방법이다. 사전 공격과 혼합하여 더욱 효과적으로 공격을 시도할 수 있다. 2020. 2. 3.
제로 트러스트 보안 모델 제로 트러스트 보안 모델 제로 트러스트(Zero Trust)는 2010년 포레스터 리서치(Forrester Reserach)의 애널리스트이던 존 킨더박(John Kindervag)이 처음 소개한 보안 모델/프레임 워크이다. 제로 트러스트 모델은 기본적으로 인증받기 전 그 누구도 신뢰하지 않으며 접근권한을 부여하기 전에 모든 것에 대한 엄격한 인증을 요구한다. 매우 적극적인 보안 방식으로 모든 파일이 잠재적 위험 요소라는 전제하에 모든 데이터를 모니터링하며, 모든 데이터에 접근할 때 안전한 경로를 통하도록 하고 데이터 접근 권한은 필요한 경우에만 허락한다. 시스템 설계 시 기존에 외부에서 내부가 아니라 내부에서 외부로 설계하며 모든 트래픽을 검사, 로그 리뷰한다. 경계 보안 모델의 위험성 기존의 경계 보안.. 2020. 2. 3.
[Python] 파이썬 절대 경로 / 사용자 이름 가져오기 format(os.getlogin()) 사용자 이름 가져오기 format(os.getlogin()) format(os.login) import os print(format(os.getlogin())) # C:\User\lucidyul\~~~~ # lucidyul 절대경로 설정 예 import os path = "C:/Users/{}/desktop".format(os.getlogin()) # {}부분에 사용자 이름 print(path) # C:/Users/lucidyul/desktop 2020. 2. 2.
[Python] pyinstaller 에러 RecursionError: maximum recursion depth exceeded pyinstaller을 사용해 exe로 변환할 때 발생하는 RecursionError: maximum recursion depth exceeded 1. pyinstaller 사용 2. maximum recursion depth exceeded 에러 발생 3. 생성된 spec 파일을 열고 4. 상단에 아래 코드 추가 import sys sys.setrecursionlimit(5000) 5. 터미널에서 파이썬 파일이 아닌 spec 파일로 pyinstaller 실행 6. build 폴더 안에 생성 완료 참고 https://stackoverflow.com/questions/38977929/pyinstaller-creating-exe-runtimeerror-maximum-recursion-depth-exceede.. 2020. 1. 31.
[Python] PyQt5 특정 리스트, 딕셔너리를 리스트 뷰에 표시 2020/01/10 - [Programming/Python] - [Python] PyQt5 List View에 아이템 추가하기 PyQt5 리스트, 딕셔너리를 리스트 뷰에 표시 day는 요일 구하는 함수 import datetime def day(self): t = ['월', '화', '수', '목', '금', '토', '일'] r = datetime.datetime.today().weekday() return t[r] monday, tuesday, ... 리스트 안에 아이템들이 있고 이 리스트들을 딕셔너리로 한번 더 묶음 monday = ['~', '~~'] tuesday = ['~', '~~'] wednesday = ['~', '~~'] thursday = ['~', '~~'] friday = ['~'.. 2020. 1. 31.