목록전체 글 (112)
Shine's dev log
논문 제목 : Detecting Credential Spearphishing Attacks in Enterprise Settings 0. Abstract 본 논문에서는 enterprise 환경에서 credential spearphishing 공격을 탐지하는 새로운 방안을 제시한다. 제안된 시스템에 사용된 feature는 spearphishing 공격의 특징을 반영한 feature를 사용하며, 새로운 non-parametric anomaly scoring technique 기술과 결합하여 사용한다. 본 시스템을 수년간 수집된 수신 이메일 데이터셋에 적용하여 평가한 결과, 다양한 spearphishing 공격을 탐지할 수 있었으며, 또한 본 시스템의 FP rate가 매우 낮아 실용적이며, 기존의 방법보다 훨..
1. Association Rules Association Rules 란, items 사이의 관계를 나타내는 법칙을 찾는 방법이다. Association Ruels 에서 항상 나오는 예제가 바로 시장에서 물건을 사는 예제이다. 시장에 과일, 야채, 고기, 생선이 있다고 할 때 "고기와 생선를 산 사람이 야채도 살 확률은 얼마인가?" 등과 같이 여러 상품간의 관계를 나타낼 수 있는 질문에 답을 해줄수 있는 것이 Association rules 이다. Association Rules 는 X -> Y 로 표현이 가능하며, 이는 "X를 선택할 때, Y를 선택할 확률"로 표현할 수 있다. 대표적으로 Association rues 가 활용될 수 있는 영역은 앞서 살펴본 시장 외에도 병원, UX 디자인, 넷플릭스 등..
논문 제목 : RiskTeller: Predicting the Risk of Cyber Incidents 0. Abstract 모든 시스템에는 취약점이 존재한다. 이러한 취약점으로부터 피해를 최소화하기 위해서는, risk level을 정량화하고 예측하는 시스템 필요하다. 저자는 RiskTeller 라는 시스템 고안하였다. 해당 시스템은 binary file appearance log를 통해 위험을 예측하는 구조이다. 우선 사용자 각각의 usage pattern 을 담은 profile 을 분석한 후, 각 profile 별로 얼마나 위험에 처해져있는지 fully/semi-supervised learning 방법 통해 예측한다. 1년동안 각 machine에 사용된 모든 binary 데이터 (machine pr..
논문 제목 : Hardware Performance Counters Can Detect Malware: Myth or Fact? 0. abstract 최근 연구들에서 HPC 값과 ML 모델을 통한 멀웨어 탐지 방안이 제안되었다. HPC는 low level 행위 (가령 cache hit/miss, branch prediction, load/store operation)등을 기록하는 특수 목적의 레지스터이다. 하지만, HPCS는 low level에서 동작하므로, high level인 어플리케이션의 특징을 담진 못한다. 본 연구에서 저자는 HPC 값을 통해 멀웨어를 탐지할 수 없다는 것을 증명해내려고 한다. 또한 추가적으로 랜섬웨어에 감염된 Notepad++가 HPC 기반의 멀웨어 탐지를 할 수 없다는것을 직..
1. Activity Selection 코드 def activity_selection(S, F, k, n, result): m = k + 1 while m a3 선택 3) a3을 선택하고 난 뒤 남은 시간은 7~16이다. 이 중 가장 빨리 끝나는 Activity는 a6이다. -> a6 선택 4) a6을 선택하고 난 뒤 남은 시간은 10~16이다. 이 중 가장 빨리 끝나는 Activity는 a8이다. -> a8 선택 5) a8을 선택하고 난 뒤 남은 시간은 14~16이다. 이 중 선택할 수 있는 Activity는 없다. -> 종료 즉 위와 같은 과정을 통해 나온 결론은 a1, a3, a6, a8이다. 다시 코드로 돌아가보자. def activity_selection(S, F, k, n, result): m..
1. LCS 코드 def lcs(X, Y, m, n): if m == 0 or n == 0: return 0 elif X[m-1] == Y[n-1]: return 1 + lcs(X, Y, m-1, n-1) else: return max(lcs(X, Y, m, n-1), lcs(X, Y, m-1, n)) X = ['h', 'e', 'r', 'o', 'i', 'c', 'a', 'l', 'l', 'y'] Y = ['s', 'c', 'h', 'o', 'l', 'a', 'r', 'l', 'y'] print(lcs(X, Y, len(X), len(Y))) 위의 코드는 LCS를 recursive 하게 수행하는 python 코드다. (Dynamic Programming 방식 아님) def LCS_dp(X, Y, m, ..