I grabbed the macro in the sidenotes package that places the sidenote mark and text and revised it. What I did was horizontally shift the mark leftward using a right-aligned, zero-width makebox: \makebox[0pt][r]{\textsuperscript{\thesidenote}{}~}. Later, outside of the macro, I shifted the \marginparsep 9pt to the right. I also increased the \marginparwidth by 9pt as well. Here is the result.
EDITED to address the issue when an optional argument (sidenotemark) is specified.
\documentclass[paper=a4, DIV=6]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\usepackage{sidenotes}
\usepackage[hang]{footmisc}
\makeatletter
\RenewDocumentCommand \sidenotetext { o o +m }
{
\IfNoValueOrEmptyTF{#1}
{
@sidenotes@placemarginal{#2}{%
\makebox[0pt][r]{% <--THIS WAS ADDED
\textsuperscript{\thesidenote}{}~%
}% <--THIS WAS ADDED
#3}
\refstepcounter{sidenote}
}
{@sidenotes@placemarginal{#2}{%
\makebox[0pt][r]{% <--THIS WAS ADDED
\textsuperscript{#1}~%
}% <--THIS WAS ADDED
#3}}
}
\makeatother
\marginparwidth=\dimexpr\marginparwidth+9pt% <--THIS WAS ADDED
\marginparsep=\dimexpr\marginparsep+9pt% <--THIS WAS ADDED
\begin{document}
Hello World!\footnote{\lipsum[4]}\sidenote{This is the
text of my sidenote. I want it to hang.}
\lipsum[2]\sidenote[*]{This is a secondary test when
an optional argument is specified}
\end{document}
