website/app/Route/Index.elm

308 lines
12 KiB
Elm
Raw Normal View History

2023-10-24 05:23:25 +07:00
module Route.Index exposing (ActionData, Data, Model, Msg, route)
import BackendTask exposing (BackendTask)
import FatalError exposing (FatalError)
import Head
import Head.Seo as Seo
2023-11-05 22:06:54 +07:00
import Html.Styled exposing (..)
2024-01-29 23:35:05 +07:00
import Html.Styled.Attributes exposing (style, target, src)
2023-10-24 05:23:25 +07:00
import Link exposing (Link)
import Pages.Url
import PagesMsg exposing (PagesMsg)
import UrlPath
import Route
import RouteBuilder exposing (App, StatelessRoute)
import Shared
import View exposing (View)
type alias Model =
{}
type alias Msg =
()
type alias RouteParams =
{}
type alias Data =
{ message : String
}
type alias ActionData =
{}
route : StatelessRoute RouteParams Data ActionData
route =
RouteBuilder.single
{ head = head
, data = data
}
|> RouteBuilder.buildNoState { view = view }
data : BackendTask FatalError Data
data =
BackendTask.succeed Data
|> BackendTask.andMap
(BackendTask.succeed "Hello!")
head :
App Data ActionData RouteParams
-> List Head.Tag
head app =
Seo.summary
{ canonicalUrlOverride = Nothing
2023-11-05 22:06:54 +07:00
, siteName = "nganhkhoa.com"
2023-10-24 05:23:25 +07:00
, image =
2023-11-05 22:06:54 +07:00
{ url = "https://nganhkhoa.com/nganhkhoa.png" |> Pages.Url.external
, alt = "nganhkhoa"
2023-10-24 05:23:25 +07:00
, dimensions = Nothing
, mimeType = Nothing
}
2023-11-05 22:06:54 +07:00
, description = "Personal blog of nganhkhoa"
2023-10-24 05:23:25 +07:00
, locale = Nothing
2023-11-05 22:06:54 +07:00
, title = "Anh Khoa Nguyen"
2023-10-24 05:23:25 +07:00
}
|> Seo.website
2023-11-05 22:06:54 +07:00
withSpacing : (List (Html msg) -> Html msg) -> List (Html msg) -> Html msg
withSpacing element =
List.intersperse (text " ") >> element
2023-10-24 05:23:25 +07:00
view :
App Data ActionData RouteParams
-> Shared.Model
-> View (PagesMsg Msg)
view app shared =
2023-11-06 00:20:32 +07:00
{ title = "nganhkhoa"
2023-10-24 05:23:25 +07:00
, body =
2024-01-29 23:35:05 +07:00
[ div [ style "display" "flex", style "column-gap" "10px" ]
[ quicklinks "github" "Github"
, quicklinks "git" "Personal Git"
, quicklinks "blog" "Blog Posts"
, quicklinks "osx" "OSX series"
, quicklinks "efiens" "Efiens Blogs"
]
, br [] []
, img [src "/nganhkhoa.png"] []
2023-11-05 22:06:54 +07:00
, withSpacing (p [])
[ text "Welcome to my personal website, where I post random things and thoughts."
]
, withSpacing (p [])
[ text "I'm a Security Engineer at"
2024-01-29 23:35:05 +07:00
, quicklinks "bshield" "BShield"
2023-11-05 22:06:54 +07:00
, text "and"
2024-01-29 23:35:05 +07:00
, quicklinks "verichains" "Verichains"
2023-11-05 22:06:54 +07:00
, text "Before that, I was a member of Efiens under the name"
2024-01-29 23:35:05 +07:00
, quicklinks "efiens" "luibo."
2023-11-05 22:06:54 +07:00
]
, withSpacing (p [])
[ text "My specialty are in computer security: memory forensics, binary analysis, program analysis, and compiler."
, text "My interest in computer systems are programming languages."
, text "I am finding for opportunities in type theory, operational semantic, and formal methods."
]
, withSpacing (p [])
[ text "My Github is"
2024-01-29 23:35:05 +07:00
, quicklinks "github" "nganhkhoa."
2023-11-05 22:06:54 +07:00
, text "But I also maintain my personal git at"
2024-01-29 23:35:05 +07:00
, quicklinks "git" "git.nganhkhoa.com."
2023-11-05 22:06:54 +07:00
]
, text "You can find out more about me in my "
2024-01-29 23:35:05 +07:00
, quicklinks "cv" "CV."
2023-11-05 22:06:54 +07:00
, br [] []
2023-12-17 04:04:06 +07:00
, text "I often write blogs, most of them are based on my research knowledge. "
2023-11-05 22:06:54 +07:00
, text "You can find my blogs "
2024-01-29 23:35:05 +07:00
, quicklinks "blog" "here."
2023-11-05 22:06:54 +07:00
, br [] []
2024-01-29 23:35:05 +07:00
, text "I also wrote a series about Mach-O binary format. You can find it "
, quicklinks "osx" "here."
2023-11-05 22:06:54 +07:00
, br [] []
, text "I am a Vietnamese polyglot, fluent in English, conversational in Japanese, beginners in Mandarin and Korean."
, withSpacing (p [])
[ text "\"I use (neo)Vim and Arch, btw\" - probably me."
, text "This site is written using"
2024-01-29 23:35:05 +07:00
, quicklinks "elm" "elm-pages."
2023-11-05 22:06:54 +07:00
]
, projects
, br [] []
, publications
2023-10-24 05:23:25 +07:00
]
}
2023-11-05 22:06:54 +07:00
projects : Html msg
projects =
div []
[ h1 [] [text "My Projects"]
, div []
2023-12-14 22:57:51 +07:00
[ h2 [] [text "(2023) TSShock"]
2023-11-05 22:06:54 +07:00
, withSpacing (p [])
[ text "At Verichains, our team discovered multiple weaknesses in most implementations of Threshold ECDSA Signature Scheme following the works of"
2024-01-29 23:35:05 +07:00
, quicklinks "gg" "Gennaro and Goldfeder."
2023-11-05 22:06:54 +07:00
, text "As the result, we presented our findings at "
2024-01-29 23:35:05 +07:00
, quicklinks "tsshockblackhat" "Black Hat USA 2023"
2023-11-05 22:06:54 +07:00
, text "and"
2024-01-29 23:35:05 +07:00
, quicklinks "tsshockhitb" "Hack In The Box Phuket 2023"
2023-11-05 22:06:54 +07:00
, text "titled \"TSSHOCK: Breaking MPC Wallets and Digital Custodians for $BILLION$ Profit\"."
]
]
, div []
2023-12-14 22:57:51 +07:00
[ h2 [] [text "(2023) Audited Vietnam Citizen Card"]
2023-11-05 22:06:54 +07:00
, withSpacing (p [])
[ text "Performed auditing of the protocol and the chip-based Citizen Card of Vietnam."
, text "Simulation of NFC protocols conforming to ICAO 9303."
, text "Found several vulnerabilities in applications verifying the authenticity of these cards."
, text "Government applications and devices are also audited."
, text "The foundation research for the development of"
2024-01-29 23:35:05 +07:00
, quicklinks "bshield" "BShield Secure-ID."
2023-11-05 22:06:54 +07:00
]
]
, div []
2023-12-14 22:57:51 +07:00
[ h2 [] [text "(2019 - 2023) Mach-O binary format analysis and obfuscation"]
2023-11-05 22:06:54 +07:00
, withSpacing (p [])
[ text "Research into Mach-O binary format, which is used in Apple devices."
, text "Proposed obfuscation for the Mach-O binary."
, text "Familiar with tools for pentesting iOS applications."
]
]
, div []
2023-12-14 22:57:51 +07:00
[ h2 [] [text "(2021-2022) LLVM based Obfuscation"]
2023-11-05 22:06:54 +07:00
, withSpacing (p [])
[ text "Build a LLVM based obfuscation compiler."
, text "Extend"
2024-01-29 23:35:05 +07:00
, quicklinks "ollvm" "Obfuscator-LLVM"
2023-11-05 22:06:54 +07:00
, text "with"
2024-01-29 23:35:05 +07:00
, quicklinks "mba" "Mixed Boolean-Arithmetic"
2023-11-05 22:06:54 +07:00
, text "as well as many other obfuscation passes."
, text "Fully updated to LLVM 14 with support for both new and legacy pass manager."
, text "A CTF challenge is released obfuscated using our obfuscator in"
2024-01-29 23:35:05 +07:00
, quicklinks "tetctf2022" "TetCTF 2022"
2023-11-05 22:06:54 +07:00
]
]
, div []
2023-12-14 22:57:51 +07:00
[ h2 [] [text "(2019-2023) Windows Live Memory Forensics"]
2023-11-05 22:06:54 +07:00
, withSpacing (p [])
[ text "Research into Windows Forensics."
, text "Learned techniques used in Memory Forensics and familiar with tools like Volatility."
, text "Develope a new method for Live Forensics using Memory Forensics without Memory Extraction."
, text "A prototype is implemented, capable of inspecting the kernel global variables, structures,"
, text "and performing"
2024-01-29 23:35:05 +07:00
, quicklinks "poolscan" "Pool Tag Quick Scanning."
2023-11-05 22:06:54 +07:00
, text "This prototype is updated in 2023 to also detect injected code in processes for detection of"
, text "DLL Injection, Reflective DLL Injection, Process Hollowing, and similar malware techniques."
]
]
]
publications : Html msg
publications =
div []
[ h1 [] [text "Publications"]
, text "Most of my publications are drafts and not reviewed paper."
, text " "
, text "Because I am not in an academic environment so I do not know how to publish."
, br [] []
, br [] []
, withSpacing (div [])
[ text "New Key Extraction Attackson Threshold ECDSA Implementations."
, text "Duy Hieu Nguyen, Anh Khoa Nguyen, Huu Giap Nguyen, Thanh Nguyen, Anh Quynh Nguyen."
, text "August 2023."
, br [] []
2024-01-29 23:35:05 +07:00
, quicklinks "tsshockwebsite" "[website]"
, quicklinks "tsshockwhitepaper" "[whitepaper]"
, quicklinks "tsshockvideohitb" "[HITB Recordings]"
2023-11-05 22:06:54 +07:00
]
, br [] []
, withSpacing (div [])
2023-12-14 22:57:51 +07:00
[ text "Obfuscate API calls in Mach-O Binary."
2023-11-05 22:06:54 +07:00
, text "Anh Khoa Nguyen."
, text "Expecting 2024."
, br [] []
2024-01-29 23:35:05 +07:00
, quicklinks "macho" "[preprint]"
2023-11-05 22:06:54 +07:00
]
, br [] []
, withSpacing (div [])
2023-12-14 22:57:51 +07:00
[ text "Live Memory Forensics Without RAM Extraction."
2023-11-05 22:06:54 +07:00
, text "Anh Khoa Nguyen, Dung Vo Van Tien."
, text "Expecting 2024."
, br [] []
2024-01-29 23:35:05 +07:00
, quicklinks "live-memory-forensics" "[preprint]"
2023-11-05 22:06:54 +07:00
]
, br [] []
, h2 [] [text "Dissertations"]
, withSpacing (p [])
[ text "After I graduated, I often advise undergraduate students on their dissertations."
, text "The list below contains my dissertation and dissertations I advised."
]
, withSpacing (div [])
[ text "Windows Memory Forensics: Finding hidden processes in a running machine."
, br [] []
, text "Author: Anh Khoa Nguyen."
, br [] []
, text "Advisors: An Khuong Nguyen, Le Thanh Nguyen, Quoc Bao Nguyen."
, br [] []
, text "Year: 2020"
, br [] []
2024-01-29 23:35:05 +07:00
, quicklinks "memorypoolscan" "[pdf]"
2023-11-05 22:06:54 +07:00
]
, br [] []
, withSpacing (div [])
[ text "Windows Memory Forensics: Detecting hidden injected code in a process."
, br [] []
, text "Author: Vo Van Tien Dung."
, br [] []
, text "Advisors: An Khuong Nguyen, Anh Khoa Nguyen."
, br [] []
, text "Year: 2023"
, br [] []
2024-01-29 23:35:05 +07:00
, quicklinks "memoryinjection" "[pdf]"
2023-11-05 22:06:54 +07:00
]
]
2024-01-29 23:35:05 +07:00
quicklinks link title =
let
linkexternal src = Link.link (Link.external src) [target "_blank"] [text title]
linkinternal src = case src of
"blog" -> Link.link (Link.internal (Route.Blog__Slug_ { slug = "" })) [] [ text title ]
"osx" -> Link.link (Link.internal (Route.Osx__Slug_ { slug = "" })) [] [ text title ]
_ -> Link.link (Link.external "") [] [text title]
in
case link of
"github" -> linkexternal "https://github.com/nganhkhoa"
"git" -> linkexternal "https://git.nganhkhoa.com"
"efiens" -> linkexternal "https://blog.efiens.com/author/luibo"
"bshield" -> linkexternal "https://bshield.io"
"verichains" -> linkexternal "https://verichains.io"
"elm" -> linkexternal "https://elm-pages.com"
-- tsshock
"gg" -> linkexternal "https://eprint.iacr.org/2019/114"
"tsshockblackhat" -> linkexternal "https://www.blackhat.com/us-23/briefings/schedule/#tsshock-breaking-mpc-wallets-and-digital-custodians-for-billion-profit-33343"
"tsshockhitb" -> linkexternal "https://conference.hitb.org/hitbsecconf2023hkt/session/tsshock-breaking-mpc-wallets-and-digital-custodians/"
"tsshockwebsite" -> linkexternal "https://verichains.io/tsshock"
"tsshockwhitepaper" -> linkexternal "https://www.verichains.io/tsshock/verichains-tsshock-wp-v1.0.pdf"
"tsshockvideohitb" -> linkexternal "https://youtu.be/1ks2jcS7UE4"
-- ollvm
"ollvm" -> linkexternal "https://doi.org/10.1109/SPRO.2015.10"
"mba" -> linkexternal "https://doi.org/10.1007/978-3-540-77535-5_5"
"tetctf2023" -> linkexternal "https://twitter.com/hgarrereyn/status/1477919411977830402"
-- memory forensics
"poolscan" -> linkexternal "https://doi.org/10.1016/j.diin.2016.01.005"
-- site resources
"cv" -> linkexternal "cv.pdf"
"blog" -> linkinternal "blog"
"osx" -> linkinternal "osx"
-- pdfs
"memorypoolscan" -> linkexternal "https://drive.google.com/file/d/1Z_cKtBsi_gm8ugsrnAEPo-Wmx9GAuaSK/view?usp=sharing"
"memoryinjection" -> linkexternal "https://drive.google.com/file/d/1X18tr4OvcNYRoyxzTcsxM_MgjcqVW1sk/view?usp=sharing"
"macho" -> linkexternal "macho-obfuscation.pdf"
"live-memory-forensics" -> linkexternal "live-memory-forensics.pdf"
_ -> linkexternal ""