Nhóm thực hiện một phân tích dữ liệu sử dụng đồthị phân bồ đối tượng được xây dựng từ bộ nhớ tai tao của tiễn trình Android dé khám phá các đặc tính phân biệt trong các ứng dụng độc hại
Thực nghiệm 1 Thiết lập môi trường 2¿¿222+++teCcvvrretrrrvrrerrrrrrcrrg 47 2 Tiến hành thf nghiém 2.1 Thu thập bộ nhớ -::¿:+¿++¿+£222222222222222213311111222 22 re 48 2.2 Tạo HeapDuimp . -¿5:- 5 c2t St St2xtrrrkrkerererkrkrrree 49 2.3 Dựng đồ thị cấp phát -2222ccc++2222vvvrrrrrrrrrrrrrrrrrerrrei 49 2.4 Trích xuất thuộc tính đồ thị cho mô hình học máy
Huấn luyện mô hình GNN cccccvcvvcveccecrerrrrrrree 51 4.2 Đánh giá DroidScraper và QAGen -c cccc+ccccerrrercsre 53 4.2.1 DroidScraper cccccceiererererree 53 422 OAGcfZ đế 4đằ x@
Nếu như với các mô hình học máy truyền thống ta cần tính toán chỉ tiết các chi sô của đô thị thì đôi với các mô hình GNN, ta chỉ cân tạo các điêm dữ num_edges average degree
Hình 4.4 Các đặc trưng của bộ dữ liệu.
Huấn luyện mô hình GNN. liệu tượng trưng cho các đồ thị.
Mỗi điểm dit liệu gồm 3 thành phan: ô x là ma trận cú kớch thước = [số đỉnh, số thuộc tớnh của mỗi đỉnh] Ta lựa chọn 2 thuộc tính là “label” và “data”. ô edge index là ma trận cú kớch thước = [2, số cạnh] Trong đú mỗi cột đại diện cho một cạnh, dòng đầu tiên đại điện cho đỉnh nguồn và dòng thứ 2 đại diện cho đỉnh đích của cạnh.
‹ _ y là nhãn của điểm dữ liệu, y = 0 đối với ứng dụng lành tinh và 1 đối với ứng dụng độc hại.
Trong hình dưới đây, ta thấy đồ thị đầu tiên là malware, có 40231 đỉnh và
78030 cạnh Đây là một điểm đữ liệu đầu vào cho mô hình GNN.
Data(x=[21183, 2], edge index=[43514], y=1) Data(x=[52167, 2], edge index=[96722], y=1) Data(x=[94231, 2], edge index=[151114], y=1) Data(x=[68885, 2], edge index=[79258], y=8) Data(x=[41439, 2], edge index=[75584], y=8)
Hình 4.5 Dữ liệu đầu vào cho GNN.
Nhóm sử dụng một số thuật toán GNN được định nghĩa trong torch_geometric.nn [35] dé làm các bộ phân loại cho mô hình: GCN, SAGE,
GIN, class GNNClassifier(nn.Module): def _ init (self, num_node_features, hidden size, num_classes): super(GNNClassifier, self) init () def
# self. self.conv1 self.conv2 self.conv3
# self. self.fc = nn. conv1 conv2 conv3 conv1 conv2 conv3 conv1 conv2 conv3
GCNConv(num_node_features, hidden_ size) GCNConv(hidden_size, hidden_ size)
GCNConv(hidden_size, hidden_ size)
SAGEConv(num node features, hidden_ size) SAGEConv(hidden_size, hidden_size)
SAGEConv(hidden_size, hidden_ size)
GATConv(num_node_features, hidden size, heads=1) GATConv(hidden_size, hidden size, heads=1)
GATConv(hidden size, hidden size, heads=1)
GINConv(nn.Sequential(nn.Linear(num_node features, hidden_ size), nn.ReLU()), train eps=True) GINConv(nn.Sequential(nn.Linear(hidden_size, hidden_ size), nn.ReLU()), train_eps=True)
GINConv(nn.Sequential(nn.Linear(hidden_size, hidden size), nn.ReLU()), train_eps=True)
Linear(hidden_size, num_classes) forward(self, data): x, edge_index, batch = data.x, data.edge index, data.batch
Ke x x x x x x = self.conv1(x, edge_index)
= F.relu(x) self.conv2(x, edge index) F.relu(x) self.conv3(x, edge index) F.relu(x) global_mean_pool(x, batch)
= self.fc(x) return F.log softmax(x, dim=1) # If not using BCE
# return torch.sigmoid(x) # If using BCE
Hình 4.6 Dinh nghĩa mô hình GNN.
4.2 Đánh giá DroidScraper và OAGen.
4.2.1 DroidScraper. Để đánh giá hiệu quả của DroidScraper trong việc thống kê số lượng đối tượng và khôi phục các đối tượng sống, nhóm thực thi mô đun HeapDump để khôi phục các đối tượng sống có thể truy cập được Như được thể hiện trong Bảng 4.1 và Bang 4.2, cột Allocated Objects thể hiện tổng số đối tượng được cấp phát trong tat cả các vùng Giá trị này tương ứng với tổng các giá trị của trường objects allocated_ của cấu trúc Region cho tất cả các vùng non-Tlab và trường thread_local_objects của mỗi Thread trong các vùng TLAB Như đã dé cập ở mục 3.2.2.1, module HeapDump cé gắng tìm hiểu loại đối tượng và kích thước của nó trong vùng nhớ đã cấp phát Tuy nhiên, không phải tất cả các đối tượng đều có thể được khôi phục vì một số đối tượng có thê đã được giải phóng ngay cả khi vùng chứa nó không được thu thập. Đề phân tích tốt hơn, các đối tượng đã khôi phục được nhóm thành Primitives, Arrays, Strings và Objects Tông số đối tượng đã khôi phục được hién thị trong cột Total Recovered Đề đánh giá hiệu suất của DroidScraper, tỷ lệ khôi phục được tinh là tỷ lệ giữa tong số đối tượng đã khôi phục được và tông số đôi tượng tích lũy trong tất cả các vùng được cấp phát Đối với mỗi ứng dụng thử nghiệm, tỷ lệ khôi phục được hiển thị trong cột % Recovered Tỷ lệ khôi phục trung bình trên tất cả các ứng dụng thử nghiệm là khoảng 79,94% với 52 ứng dụng lành tính lay từ dataset và 75,97% đối với 52 ứng dụng độc hại lay từ dataset Điều nay có nghĩa là DroidScraper có thé khôi phục trên 75% số đối tượng được cấp phát trong không gian bộ nhớ tiễn trình dưới dạng các định dạng có cấu trúc tốt Ty lệ này càng cao, DroidScraper càng có khả năng khôi phục các đối tượng Runtime quan trọng liên quan đến pháp chứng được tạo ra bởi một tiến trình Android.
Application | Allocated | Found | Recovered|% Recovered| Primitives | Strings | Arrays| Objects mengdie 26170 |25686| 25148 96.094765 5533 4097 | 1124 | 14394 donutgame 3720 | 3605 3565 95.83333333 530 811 301 1923 x7knn 4191 | 3979 3884 | 92.67477929 339 431 224 | 2890 livepicker 11865 | 11262} 10912 | 91.96797303 881 1346 | 1009 | 7676 wetwssfd | 65541 |63023| 60220 |91.8§141774 6863 7586 | 3322 | 42449
Bảng 4.1 Top 5 ứng dụng mã độc từ dataset có tỉ lệ khôi phục thành công các đối tượng cao nhất.
Application | Allocated | Found | Recovered | % Recovered| Primitives | Strings |Arrays |Objects shoppinglst 84884 | 81874 | 79645 | 93.82804769 13351 9379 | 4867 | 52048 pedometer 45894 | 43533 | 42177 | 91.90090208 8021 12043 | 895 | 21218 gramwlotka | 236134 |223284| 216462 | 91.66913702 15390 9103 | 6497 |185472 widgetclock | 59037 | 56383 | 54069 | 91.58493826 6204 4177 | 2923 | 40765 simplelPTV | 103871 | 97272 | 92699 | 89.24435117 7042 4422 | 11766 | 69469
Bang 4.2 Top 5 ứng dụng lành tinh tir dataset có tỉ lệ khôi phục thành công các đối tượng cao nhất.
Sử dung output của mô đun Heapdump từ DroidScraper, OAGen được sử dụng trên 52 ứng dụng lành tính và 52 ứng dụng độc hại tương ứng Bảng 4.3 và Bảng 4.4 thé hién số lượng nút và cạnh được tạo bởi OAGen đối với các ứng dụng có tỉ lệ khôi phục các đối tượng cao nhất Sở dĩ số lượng node nhiều hon so với số đối tượng vì các đối tượng được cấp phát trong Heap có tham chiếu đến các đối tượng này ở các khu vực khác.
Application | Allocated | Found | Recovered | % Recovered | Number Of Nodes | Number Of Edges shoppinglst 84884 | 81874 79645 93.82804769 102071 190939 pedometer 45894 | 43533 42177 91.90090208 60085 79258 gramwlotka | 236134 |223284| 216462 | 91.66913702 253845 633475 widgetclock 59037 | 56383 54069 91.58493826 77632 152980 simpleIPTV | 103871 | 97272 92699 89.24435117 123467 232489
Bảng 4.3 OAGen - 5 ứng dụng lành tính có tỉ lệ khôi phục các đối tượng lớn nhất.
Application | Allocated | Found | Recovered | % Recovered| Number Of Nodes | Number Of Edges mengdie 26170 |25686| 25148 96.094765 38835 64205 donutgame | 3720 | 3605 3565 95.83333333 15961 34430 x7knn 4191 3979 3884 | 92.67477929 17992 39929 livepicker | 11865 [11262| 10912 | 91.96797303 27634 58750 wetwsfsfsd | 65541 |63023| 60220 | 91.88141774 79399 147823
Bang 4.4 OAGen - 5 ứng dung độc hai có tỉ lệ khôi phục các đối tượng lớn nhất.
Phát hiện mã độc bằng mô hình học máy -z++ 55 4.3.1 Đánh giá dữ liệu và các mô hình học máy truyền thống
Đánh giá mô hình Graph Neural Network (GNN)
Do dữ liệu benign và malware từ dataset còn ít, nhóm đã sử dụng thêm 10 mẫu benign từ PlayStore và 4 mẫu malware từ VirusShare để làm đầu vào cho các model GNN Kết quả cho thấy GraphSAGE có khả năng phát hiện graph
63 malware với tỉ lệ chính xác ở mức gần 70%, còn GCN và GIN đạt mức trung bình dưới 60%.
Bảng 4.6 Đánh giá hiệu quả các mô hình GNN.
Train/test loss over epochs (ARMAConv) 10 Test accuracy over epochs (ARMAConv)
300 † — Train Loss - Average Test Accuracy
Train/test loss over epochs (SAGEConv) -= Test accuracy over epochs (SAGEConv)
Train Loss - Average Test Accuracy
Train and Test Losses Over Epochs (GCNConv) Test accuracy over epochs (GCNConv)
70 4 —— Train Loss - Average Test Accuracy
Train and Test Losses Over Epochs (GINConv) Test accuracy over epochs (GINConv)
—— Train Loss - Average Test Accuracy
Train and Test Losses Over Epochs (GraphConv) Lo Test accuracy over epochs (GraphConv)
1400 4 Train Loss - Average Test Accuracy
Hình 4.20 Train loss, test loss và test accuracy qua các epoch của các mô hình
Trong qua trình nghiên cứu, nhóm đã dat được một số kết quả sau:
Tạo ra bộ dữ liệu gồm 153 đồ thị cấp phát đối tượng.
Xây dựng quy trình tạo đữ liệu hoàn chỉnh từ giai đoạn trích xuất bộ nhớ tiến trình đến bước xử lý dữ liệu làm đầu vào cho các mô hình phát hiện mã độc. Phát hiện thành công đồ thị của ứng dụng mã độc nhờ các đặc trưng khác biệt của chúng so với đồ thị của ứng dụng lành tính.
Giới thiệu AOAG — bộ dữ liệu gồm các đồ thị cấp phát đối tượng của ứng dụng Android.
Giới thiệu phương pháp tạo dữ liệu hoàn chỉnh từ giai đoạn trích xuất bộ nhớ tiến trình đến bước xử lý đữ liệu làm đầu vào cho các mô hình phát hiện mã độc. Áp dụng thành công một số thuật toán học máy dé phát hiện mã độc dựa trên đồ thị cấp phát đói tượng.
Phương pháp này có thể được sử dụng bởi các nghiên cứu trong tương lai để tạo ra nhiều dữ liệu hơn Dữ liệu được tạo có thể làm đầu vào cho đa dạng các loại mô hình học máy hơn.
Trong khóa luận này, nhóm đã đề xuất một mô hình hoàn chỉnh và chứng minh rằng có thé phát hiện được ứng dung mã độc chỉ dựa trên bộ nhớ của một tiến trình Android đang chạy, bằng cách phân tích các đối tượng đã được cấp phát và mối liên kết giữa chúng.
Mặc dù AOAG có thé phát hiện thành công mã độc, nhưng độ chính xác chưa cao vì dữ liệu chưa đủ độ lớn Một số hướng phát triển dé tài trong tương lai: e Tạo thêm nhiều điểm dé liệu hơn nhằm tăng tỉ lệ dự đoán đúng của các mô hình học máy. e Thay vì chỉ dừng lại ở bước phát hiện mã độc, nhóm dự định áp dụng GNN trên một tập đữ liệu lớn hơn nhiều dé phân loại các danh mục phần mềm độc hại khác nhau như adware, rIskware, scareware,
Chương 7 TÀI LIỆU THAM KHẢO
A Ali-Gombe, S Sudhakaran, A Case, and G G Richard III 2019. DroidScraper: A Tool for Android In-Memory Object Recovery and Reconstruction In 22nd International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2019) 547-559.
Adam Pridgen, Simson Garfinkel, and Dan S Wallach Picking up the Trash: Exploiting Generational GC for Memory Analysis Digital Investigation, 20:S20-S28, 2017.
Adam Pridgen, Simson Garfinkel, and Dan Wallach 2017 Present but unreachable: reducing persistent latent secrets in hotspot jvm (2017).
Aisha Ali-Gombe 2019 DroidScraper. https://github.com/apphackuno/DroidScraper.
Aisha Ali-Gombe 2020 OAGen https://github.com/apphackuno/OAGen.
Alberto Magno Muniz Soares and Rafael Timóteo de Sousa Jr 2017 A Technique for Extraction and Analysis of Application Heap Objects within Android Runtime (ART) In ICISSP 147-156.
Ali-Gombe, A., Tambaoan, A., Gurfolino, A., & Richard III, G G (2020, December) App-agnostic post-execution semantic analysis of Android in- memory forensics artifacts In Annual Computer Security Applications Conference (pp 28-41).
Ana Milanova, Atanas Rountev, and Barbara G Ryder 2002 Parameterized object sensitivity for points-to and side-effect analyses for Java In Proceedings of the 2002 ACM SIGSOFT international symposium on
Android 8.0 ART Improvements. https://source.android.com/devices/tech/dalvik/improvements.
Android Adware and General Malware Dataset (CIC-AAGM2017) https://www.unb.ca/cic/datasets/android-adware.html.
Android Code Search https://cs.android.com/.
Android Malware Dataset (CIC-AndMal2017) https://www.unb.ca/cic/datasets/andmal2017.html.
Android Debugging ART Garbage Collection. https://source.android.com/docs/core/runtime/gc- debug#invalid_root_example 2015.
AndroidXRef Androidxref oreo 8.0.0_r4. http://androidxref.com/8.0.0_r4/xref/art 2018.
Brendan Saltaformaggio, Rohit Bhatia, Xiangyu Zhang, Dongyan Xu, and Golden G Richard III 2016 Screen after previous screens: Spatial-temporal recreation of android app displays from memory images In 25th USENIX Security Symposium (USENIX Security 16) 1137-1151.
Brendan Saltaformaggio, Rohit Bhatia, Zhongshu Gu, Xiangyu Zhang, and Dongyan Xu 2015 GUITAR: Piecing together android app GUIs from memory images In Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security 120-132.
Brendan Saltaformaggio, Zhongshu Gu, Xiangyu Zhang, and Dongyan Xu.
2014 DSCRETE: Automatic Rendering of Forensic Information from
Memory Images via Application Logic Reuse In 23 USENIX Security
Cetus Team 2004-2011 The Cetus Compiler Manual ParaMount Research Group, Purdue University.
CICMalDroidd 2020 Dataset https://www.unb.ca/cic/datasets/maldroid- 2020.html.
Concurrent and Parallel Garbage Collection. http://www.cs.umd.edu/class/fall2013/cmsc433/lectures/concGC pdf.
Concurrent Mark Sweep (CMS) Collector. https://docs.oracle.com/javase/8/docs/.
Errica, F., Podda, M., Bacciu, D., & Micheli, A (2019) A fair comparison of graph neural networks for graph classification arXiv preprint arXiv: 1912.09893.
Genymotion 2023 Desktop https://www.genymotion.com/, Google Colaboratory https://colab.research.google.com/.
Google Play Store https://play.google.com/.
GoogleGit Git Repositories on Android. https://android.googlesource.com/platform/art/+/master/runtime/gc/allocato r_type.h 2018.
Hernandez, J M., & Van Mieghem, P (2011) Classification of graph metrics Delft University of Technology: Mekelweg, The Netherlands, 1-20. Holger Macht 2013 Live Memory Forensics on Android with Volatility. Friedrich-Alexander University Erlangen-Nuremberg (2013).
Hussaini, A., Zahran, B., & Ali-Gombe, A (2021, April) Object Allocation Pattern as an Indicator for Maliciousness - An Exploratory Analysis In Proceedings of the Eleventh ACM Conference on Data and Application Security and Privacy (pp 313-315).
Marzo, J L., Calle, E., Cosgaya, S G., Rueda, D., & Maủosa, A (2018, August) On selecting the relevant metrics of network robustness In 2076 10th International Workshop on Resilient Networks Design and Modeling (RNDM) (pp 1-7) IEEE.
Matheiu Chartier Performance and Memory Improvements in Android Run Time (ART)(Google I/O °17), 2017.
Memfetch https://github.com/citypw/Icamtuf-memfetch.
Networkx: https://networkx.org/documentation/stable/index.html
Neural Network Models https://scikit- learn.org/stable/modules/neural_networks_supervised.html.
Pytorch geometric Convolutional layers: https://pytorch- geometric.readthedocs.io/en/latest/modules/nn.html#convolutional-layers
Rohit Bhatia, Brendan Saltaformaggio, Seung Jei Yang, Aisha I Ali-Gombe, Xiangyu Zhang, Dongyan Xu, and Golden G Richard III 2018 Tipped Off by Your Memory Allocator: Device-Wide User Activity Sequencing from Android Memory Images In NDSS.
Scarselli, F., Gori, M., Tsoi, A C., Hagenbuchner, M., & Monfardini, G.
(2006) The graph neural network model JEEE transactions on neural networks, 20(1), 61-80.
Sklearn.ensemble.RandomForestClasifier https://scikit- learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifi er.html.
Sklearn.linear_model.LogisticRegression https://scikit- learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegressio n.html.
Sporns, O (2022) Structure and function of complex brain networks. Dialogues in clinical neuroscience.
Strongly Connected Components (Directed). https://hideoushumpbackfreak.com/algorithms/graph-search-strongly- connected-components.html.
Sudhakaran, S., Ali-Gombe, A., Case, A., & Richard III, G (2022, March). Evaluating the Reliability of Android Userland Memory Forensics In International Conference on Cyber Warfare and Security (Vol 17, No 1, pp. 423-432) Academic Conferences International Limited.
Support Vector Machines https://scikit-learn.org/stable/modules/svm.html. Tian Tan, Yue Li, and Jingling Xue 2016 Making k-object-sensitive pointer analysis more precise with still k-limiting In International Static Analysis Symposium Springer, 489-510.
Wei, Q., & Hu, G (2022) Evaluating graph neural networks under graph sampling scenarios PeerJ Computer Science, 8, e901.